Hdu2222Keywords Search
来源:互联网 发布:路亚竿能钓什么鱼 知乎 编辑:程序博客网 时间:2024/06/16 19:14
Hdu2222
存一发AC自动机模板…
【代码】
#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <queue>#define N 500005#define INF 1LL<<60using namespace std;typedef long long ll;ll read(){ ll x=0,f=1;char ch=getchar(); while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();} while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return x*f;}int T,n,cnt;int g[N][26],Next[N],tag[N];bool Flag[N];void Clear(int x){ Next[x]=tag[x]=0; memset(g[x],0,sizeof(g[x]));}void Add(char *s){ int len=strlen(s); int now=0; for(int i=0;i<len;i++) { if(!g[now][s[i]-'a']) { Clear(++cnt); g[now][s[i]-'a']=cnt; } now=g[now][s[i]-'a']; } tag[now]++;}void Input_Init(){ n=read();cnt=0; Clear(0); for(int i=1;i<=n;i++) { char s[55]; scanf("%s",s); Add(s); }}void Construct(){ queue<int>q; for(int i=0;i<26;i++) { int v=g[0][i]; if(v) q.push(v); } while(!q.empty()) { int k=q.front();q.pop(); for(int i=0;i<26;i++) { int &v=g[k][i]; if(v) { q.push(v); Next[v]=k==0?0:g[Next[k]][i]; } else v=k==0?0:g[Next[k]][i]; } }}void Solve(){ char ch[1000005];int ans=0; scanf("%s",ch); int len=strlen(ch); for(int i=0,j=0;i<len;i++) { int v=g[j][ch[i]-'a']; while(!v&&j) { j=Next[j]; v=g[j][ch[i]-'a']; } j=v; while(v&&tag[v]!=-1) { ans+=tag[v]; tag[v]=-1; v=Next[v]; } } printf("%d\n",ans);}int main(){ T=read(); while(T--) { Input_Init(); Construct(); Solve(); } return 0;}
0 0
- hdu2222Keywords Search
- hdu2222Keywords Search
- hdu2222Keywords Search
- HDU2222Keywords Search
- Hdu2222Keywords Search
- hdu2222Keywords Search (字典树)
- hdu2222Keywords Search AC自动机
- 【AC自动机】HDU2222Keywords Search
- HDU2222Keywords Search [AC自动机]
- AC自动机-hdu2222Keywords Search
- hdu2222Keywords Search字典树入门……
- hdu2222Keywords Search AC自动机模板题
- HDU2222Keywords Search(AC自动机裸题)
- hdu2222Keywords Search(AC自动机模板题)
- hdu2222Keywords Search,caioj1464(AC自动机模板)
- Search
- search
- search
- Linux头文件和库文件添加环境变量与GCC编译器添加INCLUDE与LIB环境变量
- apache和nginx区别
- 《FreeSWITCH: VoIP实战》:SIP 协议
- 【LeetCode20】【Valid Parentheses】
- MFC中对文件操作的类
- Hdu2222Keywords Search
- 3种线程的实现方法安卓开发
- MyCat的研究笔记
- Options Controlling the Kind of Output ( 控制输出种类的选项 )
- AJAX关于XmlHttpRequest内容
- Java中String内存分配详解
- 3台机器部署presto-server-0.173集群
- Caffe绘制网络模型ResNet_18_train_val
- eclipse导入myeclipse的web项目没法识别问题解决