zoukankan      html  css  js  c++  java
  • BZOJ 1355: [Baltic2009]Radio Transmission AC自动机/KMP

    被一个KMP傻题搞蒙圈了,此题AC自动机空间超限,只能用KMP写(我只会AC自动机QAQ)......

    AC自动机

    Code:

    // luogu-judger-enable-o2
    #include <bits/stdc++.h>
    #define setIO(s) freopen(s".in","r",stdin) 
    #define maxn 1000001 
    #define idx (p[i]-'a')
    using namespace std;
    char str[maxn]; 
    queue<int>Q; 
    int ch[maxn][28], root,cnt,map1[maxn],map2[maxn],l,f[maxn]; 
    void ins(char p[]){
        int len=strlen(p),x=root; 
        for(int i=0;i<len;++i) {  
            if(!ch[x][idx]) ch[x][idx]=++cnt;
            x=ch[x][idx]; 
            map1[i+1]=x, map2[x]=i+1; 
        }
    }
    void getfail(){
        for(int i=0;i<28;++i) if(ch[root][i]) Q.push(ch[root][i]); 
        while(!Q.empty()){
            int u=Q.front();Q.pop(); 
            for(int i=0;i<28;++i) {
                int q=ch[u][i]; 
                if(!q) { ch[u][i]=ch[f[u]][i]; continue;}
                Q.push(q),f[q]=ch[f[u]][i]; 
            }
        }
    }
    int main()
    {
        //setIO("input");
        scanf("%d%s",&l,str);
        ins(str),getfail();
        printf("%d",l-map2[f[map1[l]]]); 
        return 0; 
    }
    

      

  • 相关阅读:
    maven将依赖依赖打包到jar中
    Python模块之信号(signal)
    mog使用指南
    Docker 入门
    注册码
    区块链Readme.md
    彻底卸载 postgreSQL .etc
    Django
    111
    pip 安装 lxml等 出错 解决
  • 原文地址:https://www.cnblogs.com/guangheli/p/10943906.html
Copyright © 2011-2022 走看看