HDU3065 病毒侵袭持续中 AC自动机
来源:互联网 发布:qq飞车b车大黄蜂数据 编辑:程序博客网 时间:2024/05/22 03:18
又是一道模板题。
#include<stdio.h>#include<string.h>#include<queue>using namespace std;int n,ch[52000][26],val[52000],fail[52000],tot,root,ans;int solve[1001];char tt[1001][52],sorce[2000002],fea[52];queue<int>q;int newnode(){ memset(ch[tot],0,sizeof(ch[tot])); val[tot]=0; return tot++;}void update(char *a,int no){ int i,len=strlen(a),cur=root; for(i=0;i<len;i++) { if(!ch[cur][a[i]-'A']) ch[cur][a[i]-'A']=newnode(); cur=ch[cur][a[i]-'A']; } val[cur]=no; strcpy(tt[no],a);}void getfail(){ fail[root]=root; for(int i=0;i<26;i++) if(ch[root][i]) { fail[ch[root][i]]=root; q.push(ch[root][i]); } while(!q.empty()) { int cur=q.front(); q.pop(); for(int i=0;i<26;i++) if(!ch[cur][i]) ch[cur][i]=ch[fail[cur]][i]; else { fail[ch[cur][i]]=ch[fail[cur]][i]; q.push(ch[cur][i]); } }}void query(){ int cur=root,i,len=strlen(sorce); for(i=0;i<len;i++) { if(sorce[i]>='A'&&sorce[i]<='Z') { cur=ch[cur][sorce[i]-'A']; } else cur=root; int temp=cur; while(temp!=root&&val[temp]) { solve[val[temp]]++; temp=fail[temp]; } } for(i=1;i<=n;i++) if(solve[i]) { printf("%s: %d\n",tt[i],solve[i]); }}int main(){ while(~scanf("%d",&n)) { int i,j,k; tot=0; root=newnode(); memset(solve,0,sizeof(solve)); for(i=1;i<=n;i++) { scanf("%s",&fea); update(fea,i); } getchar(); getfail(); gets(sorce); query(); } return 0;}
0 0
- 【AC自动机】 hdu3065 病毒侵袭持续中
- hdu3065 病毒侵袭持续中--AC自动机
- HDU3065 病毒侵袭持续中 AC自动机
- hdu3065---病毒侵袭持续中(AC自动机)
- HDU3065 病毒侵袭持续中 AC自动机
- HDU3065病毒侵袭持续中AC自动机
- 【AC自动机】[HDU3065]病毒侵袭持续中
- 【HDU3065】病毒侵袭持续中(AC自动机)
- HDU3065 病毒侵袭持续中(AC自动机)
- hdu3065 病毒侵袭持续中 AC自动机
- HDU3065[病毒侵袭持续中] AC自动机
- HDU3065 病毒侵袭持续中(AC自动机)
- hdu3065 病毒侵袭持续中 AC自动机入门
- hdu3065--病毒侵袭持续中(AC自动机入门3)
- hdu3065 病毒侵袭持续中(AC自动机)
- HDU3065 病毒侵袭持续中(AC自动机或后缀数组)
- AC自动机(3)--hdu3065(病毒侵袭持续中)(基础题)
- [HDU3065]病毒持续侵袭中(AC自动机)
- Mysql:is not allowed to connect to this MySQL server
- Jquery来对form表单提交submitForm()(mvc方案)
- ThinkPHP 源码学习(一) ThinkPHP.php
- android:screenOrientation属性
- sql server数据库关于时间
- HDU3065 病毒侵袭持续中 AC自动机
- Linux的文件结构
- 二叉树的序遍历wikioi3143
- 学生信息管理系统系列博客七
- 细分电商
- Android和IOS的区别
- 设计模式学习05—原型模式
- hduoj1007 Quoit Design
- c++ map之insert().second