AC自动机模板,注意!ch,Fail,lab数组的大小不是n而是节点个数,需要认真计算!

 #include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <queue> using namespace std; int cnt;
int ch[][],Fail[],lab[];
char str[],S[]; void Add(const char * s)
{
int p=,i;
for(i=;s[i];++i)
{
if(!ch[p][s[i]-])ch[p][s[i]-]=++cnt;
p=ch[p][s[i]-];
}
lab[p]++;
return ;
} void Build()
{
int i,t;
queue<int> Q;
Q.push();
while(!Q.empty())
{
t=Q.front();Q.pop();
for(i=;i<;++i)
{
if(ch[t][i])
{
Q.push(ch[t][i]);
Fail[ch[t][i]]=t?ch[Fail[t]][i]:;
}
else ch[t][i]=ch[Fail[t]][i];
}
}
return ;
} int main()
{
int T,n,i; scanf("%d",&T);
while(T--)
{
memset(Fail,,sizeof(Fail));
memset(ch,,sizeof(ch));
memset(lab,,sizeof(lab));
cnt=;
scanf("%d",&n);
for(i=;i<=n;++i)
{
scanf("%s",str+);
Add(str);
}
Build();
scanf("%s",S+);
int p=,Ans=;
for(i=;S[i];++i)
{
p=ch[p][S[i]-];
if(lab[p])
{
int pp=p;
while(pp)Ans+=lab[pp],lab[pp]=,pp=Fail[pp];
}
}
printf("%d\n",Ans);
} return ;
}

最新文章

  1. linux-centos在VM中的网络配置
  2. oracle 多级菜单查询 。start with connect by prior
  3. [leetcode]Rotate Array
  4. Android请求返回417解决办法
  5. cf C. Insertion Sort
  6. jar包和war包的区别:
  7. MS数据库优化查询最常见的几种方法
  8. Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to ;XX.XX.XX.XX:6379] with root cause
  9. sublime 将tab替换为4个空格 &amp; 显示空格
  10. -bash: belts.awk: command not found
  11. PythonStudy——函数对象的案例
  12. Nginx下配置网站ssl实现https访问
  13. linux内核剖析(十一)进程间通信之-共享内存Shared Memory
  14. Handlebars的基本用法
  15. webApp开发中的总结
  16. January 01st, 2018 Week 01st Monday
  17. SQL Server 之 附加数据库出现“ 拒绝访问 ”
  18. CSS通过设置position定位的三种常用定位
  19. 【spring】RestTemplate发送请求,请求第三方接口 的几种请求方式POST,GET,DELETE,PUSH
  20. Python--Get and Post

热门文章

  1. 微信小程序之商品发布+编辑功能(多图片上传功能)
  2. 大话设计模式--DI(依赖注入)
  3. HDFS你一定要知道,要考的
  4. T-SQL查询基础
  5. Server Tomcat v8.0 Server at localhost failed to start 问题解决方法?
  6. JS——stye属性
  7. windows ping 某个网段,不能运行指定的软件
  8. [Windows Server 2012] Filezilla安装方法
  9. mysql命令行导出数据
  10. Linux 配置JDK + MyEclipse