AC自动机——HDU2222(题号很鬼畜)Keywords Search
2017-03-16 15:50
316 查看
http://acm.hdu.edu.cn/showproblem.php?pid=2222
这道题的算法就是我之前在trie中提到的高深算法——AC自动机!!!
千万不要以为AC自动机就是能使你的程序自动Accepted的东西。。。
具体的算法讲解请看我同学的详细讲解:http://blog.csdn.net/fop_zz/article/details/62418370
这题就是裸的的AC自动机啊
具体做法我同学博客都有,这里放我的代码吧
这道题的算法就是我之前在trie中提到的高深算法——AC自动机!!!
千万不要以为AC自动机就是能使你的程序自动Accepted的东西。。。
具体的算法讲解请看我同学的详细讲解:http://blog.csdn.net/fop_zz/article/details/62418370
这题就是裸的的AC自动机啊
具体做法我同学博客都有,这里放我的代码吧
#include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<cstdlib> #include<iostream> using namespace std; char c[1000010]; int np=0,b[1000010],p[1000010][27],q[1000010],fail[1000010],sum; inline void insert(){ int now=0,l=strlen(c+1); for(int i=1;i<=l;i++){ int t=c[i]-'a'; if(!p[now][t])p[now][t]=++np; now=p[now][t]; } b[now]++; } inline void bfs(){ int t,l,r;l=r=1; q[1]=0; while(l<=r){ t=q[l];int pp=0;l++; for(int i=0;i<26;i++)if(p[t][i]){ if(t==0)fail[p[t][i]]=0; else{ pp=fail[t]; while(pp){ if(p[pp][i]){fail[p[t][i]]=p[pp][i];break;} pp=fail[pp]; } if(!pp){ if(p[pp][i])fail[p[t][i]]=p[pp][i]; else fail[p[t][i]]=0; } } q[++r]=p[t][i]; } } } inline int check(){ int now=0,sum=0,l=strlen(c+1); for(int i=1;i<=l;i++){ int t=c[i]-'a'; while(!p[now][t]&&now)now=fail[now]; now=p[now][t]; int tt=now; while(tt&&b[tt]!=-1){ sum+=b[tt]; b[tt]=-1; tt=fail[tt]; } } return sum; } int main() { int jzq;scanf("%d",&jzq); while(jzq--){ for(int i=0;i<=np;i++) for(int j=0;j<26;j++)p[i][j]=0; for(int i=0;i<=np;i++)fail[i]=b[i]=0; np=0; int n;scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%s",c+1); insert(); } bfs(); scanf("%s",c+1); int ans=check(); printf("%d\n",ans); } return 0; }
相关文章推荐
- HDU2222 Keywords Search(AC自动机)
- [hdu2222]Keywords Search(AC自动机)
- HDU2222 - Keywords Search(AC自动机)
- HDU2222:Keywords Search(AC自动机)
- hdu2222 Keywords Search(ac自动机)
- hdu2222-- Keywords Search(AC自动机入门1)
- [HDU2222]Keywords Search(AC自动机)
- [HDU2222]Keywords Search(AC自动机)
- 【HDU2222】Keywords Search(AC自动机)
- [HDU2222]Keywords Search(AC自动机)
- HDU2222 Keywords Search (字符串处理-ac自动机)
- HDU2222 Keywords Search(AC自动机模板题)
- HDU2222[Keywords Search] AC自动机裸题
- hdu2222 Keywords Search (AC自动机)
- 【HDU2222】Keywords Search(AC自动机)
- [HDU2222] Keywords Search && AC自动机
- HDU 2222 Keywords Search(AC自动机)
- HDU 2222 Keywords Search (AC自动机)
- hdu 2222 Keywords Search (ac自动机模板题)
- HDU 2222 Keywords Search(AC自动机模板题)