博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AC自动机跟随Kuangbing学习笔记
阅读量:6269 次
发布时间:2019-06-22

本文共 1516 字,大约阅读时间需要 5 分钟。

http://www.cnblogs.com/kuangbin/p/3164106.html kuangbin的博客

第一段代码基本是COPY kuangbin的..

1、    最基本的入门题了

就是求目标串中出现了几个模式串。

很基础了。使用一个int型的end数组记录,查询一次。

//======================// HDU 2222// 求目标串中出现了几个模式串//输入 //1//5//she//he//say//shr//her//yasherhs //====================#include
#include
#include
#include
#include
using namespace std;struct Trie{ int next[500010][26],fail[500010],end[500010]; int root,L; int newnode() { for(int i=0;i<26;i++) next[L][i]=-1; end[L++]=0; return L-1; } void init() { L=0; root=newnode(); } void insert(char buf[]) { int len = strlen(buf); int now = root; for(int i=0;i
Q; fail[root]=root; for(int i=0;i<26;i++) if(next[root][i]==-1) next[root][i]=root; //匹配失效回到根节点继续匹配 else { fail[next[root][i]]=root; //第一层的失败指针指向root Q.push(next[root][i]); //加入队列 } while(!Q.empty()) { int now=Q.front(); Q.pop(); for(int i=0;i<26;i++) { if(next[now][i]==-1) next[now][i]=next[fail[now]][i]; else { fail[next[now][i]]=next[fail[now]][i]; Q.push(next[now][i]); } } } } int query(char buf[]) { int len=strlen(buf); int now=root; int res=0; for(int i=0;i
< 26;j++) printf("%2d",next[i][j]); printf("]\n"); } } };char s[300];char buff[1000005]; Trie ac;void input(){ int n; cin>>n; ac.init(); for(int i=1;i<=n;i++) { scanf("%s",s); ac.insert(s); } ac.build();}int main(){ int T; cin>>T; while(T--) { input(); scanf("%s",buff); printf("%d\n",ac.query(buff)); }}

转载于:https://www.cnblogs.com/zy691357966/p/5480324.html

你可能感兴趣的文章
Java compiler level does not match the version of the installed Java project facet.(转)
查看>>
WPF MediaElement.Position属性
查看>>
sqoop数据迁移(基于Hadoop和关系数据库服务器之间传送数据)
查看>>
spring mysql多数据源配置
查看>>
[React] Override webpack config for create-react-app without ejection
查看>>
检索 COM 类工厂中 CLSID 为{00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。...
查看>>
测试java的父子类化
查看>>
HDOJ 1008
查看>>
安装thrift出现的一些问题
查看>>
makefile编写---单个子目录编译模板
查看>>
Oracle DB_LINK如何使用
查看>>
cv resource
查看>>
关于加快INSERT语句执行速度和HINT /*+ append */及/*+ append nologging */的使用
查看>>
JDK源代码学习系列07----Stack
查看>>
firefox
查看>>
PS批处理的使用
查看>>
七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 【转】
查看>>
Quartz作业调度框架
查看>>
腾讯云下安装 nodejs + 实现 Nginx 反向代理
查看>>
js-权威指南学习笔记13
查看>>