AC自动机——HDU2222(题号很鬼畜)Keywords Search
来源:互联网 发布:微信是什么软件 编辑:程序博客网 时间:2024/05/21 02:52
http://acm.hdu.edu.cn/showproblem.php?pid=2222
这道题的算法就是我之前在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;}
2 0
- AC自动机——HDU2222(题号很鬼畜)Keywords Search
- 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自动机基础
- AC自动机模板——HDU2222 Keywords Search
- [AC自动机]hdu2222 Keywords Search
- HDU2222 Keywords Search AC自动机
- 【hdu2222】【AC自动机】Keywords Search
- HDU2222 Keywords Search AC自动机
- HDU2222 Keywords Search AC自动机
- [HDU2222] Keywords Search && AC自动机
- sfm流程概述
- Activity Fragment 相关 ViewPager轮播 相关
- myeclipse--开发小技巧
- 云HBase助力物联网建设
- Swift——监听属性的改变
- AC自动机——HDU2222(题号很鬼畜)Keywords Search
- 跟小博老师一起学JSP ——MVC 下篇
- Android程序员不错的十款实用工具
- C# 多个开源项目
- struts2自定义拦截器
- Java多线程之创建线程
- ROS常用命令集锦
- Java中的输入
- js及JQuery中的extend的浅析