zoukankan      html  css  js  c++  java
  • 【XSY2968】线性代数

    题目来源:noi2018模拟测试赛(二十二)

    毒瘤板题+提答场……真tm爽

    提答求最大团,各路神仙退火神仙随机化八仙过海

    题意:

    题解:

    支持双端插入的回文自动机板题

    代码:

     1 #include<algorithm>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<cstdio>
     5 #include<cmath>
     6 #include<queue>
     7 #define inf 2147483647
     8 #define eps 1e-9
     9 using namespace std;
    10 typedef long long ll;
    11 typedef double db;
    12 int q,cnt=0,anss,top[2],last[2],son[500001][4],len[500001],fail[500001],dep[500001],st[500001];
    13 ll ans=0;
    14 char op[10],x[10];
    15 int newn(int l){
    16     len[cnt]=l;
    17     return cnt++;
    18 }
    19 void init(){
    20     memset(son,0,sizeof(son));
    21     memset(st,-1,sizeof(st));
    22     newn(0);
    23     newn(-1);
    24     top[0]=q+11;
    25     top[1]=q+10;
    26     last[0]=last[1]=0;
    27     fail[0]=1;
    28 }
    29 int getfail(int u,int op){
    30     while(st[top[op]]!=st[top[op]+(op?-1:1)*(len[u]+1)])u=fail[u];
    31     return u;
    32 }
    33 void extend(int ch,int op){
    34     if(op)st[++top[op]]=ch;
    35     else st[--top[op]]=ch;
    36     int nw=getfail(last[op],op);
    37     if(!son[nw][ch]){
    38         int nn=newn(len[nw]+2);
    39         fail[nn]=son[getfail(fail[nw],op)][ch];
    40         dep[nn]=dep[fail[nn]]+1;
    41         if(len[nn]==top[1]-top[0]+1)last[op^1]=nn;
    42         son[nw][ch]=nn;
    43     }
    44     last[op]=son[nw][ch];
    45     ans+=dep[last[op]];
    46 }
    47 int main(){
    48     scanf("%d",&q);
    49     init();
    50     while(q--){
    51         scanf("%s%s",op,x);
    52         extend(x[0]-'a',op[0]=='r');
    53         printf("%lld %d
    ",ans,cnt-2);
    54     }
    55     return 0;
    56 }
  • 相关阅读:
    excel记录20191211
    oracle记录20191210
    linux查进程,杀进程,改权限,vim
    oracle 记录20191209
    PYTHON之路,线程
    PYTHON的前端部分
    Nginx安装及配置反向代理
    springboot多模块项目,在tomcat下运行
    一键安装和配置Java环境
    json转换csv并进行下载
  • 原文地址:https://www.cnblogs.com/dcdcbigbig/p/10086516.html
Copyright © 2011-2022 走看看