博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[模板][P3796]AC自动机(加强版)
阅读量:4578 次
发布时间:2019-06-08

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

Description:

输出有哪些模式串在文本串中出现次数最多,这个次数是多少

Hint:

多组数据,$ len_{文本串}<=10^6,\sum len_{模式串} <= 70*150 $

Solution:

模板题,详见代码

// luogu-judger-enable-o2#include
using namespace std;const int mxn=2e6+5;char p[160][80],str[mxn];int n,st[mxn],vis[mxn],ans[mxn];queue
q;namespace Trie { int mx,tot,cnt,fail[mxn],col[mxn],t[mxn][26]; void clear(int x) { for(int i=0;i<26;++i) t[x][i]=0; fail[x]=col[x]=0; } void ins(char *s,int id) { int len=strlen(s),u=0; for(int i=0;i
mx) cnt=0,mx=ans[col[v]]; if(ans[col[v]]==mx) st[++cnt]=col[v]; } } return mx; }}using namespace Trie;int main(){ while(1) { clear(0); for(int i=1;i<=tot;++i) fail[i]=ans[i]=st[i]=col[i]=0; mx=0,cnt=0,tot=0; scanf("%d",&n); if(n==0) break; for(int i=1;i<=n;++i) scanf("%s",p[i]); scanf("%s",str); for(int i=1;i<=n;++i) ins(p[i],i); build(); printf("%d\n",query(str)); sort(st+1,st+cnt+1); for(int i=1;i<=cnt;++i) cout<
<

转载于:https://www.cnblogs.com/list1/p/10386227.html

你可能感兴趣的文章
[转]Blocking Code Injection on iOS and OS X
查看>>
自动化测试
查看>>
vue $options 获取自定义属性
查看>>
Vue避免 v-if 和 v-for 用在一起
查看>>
TraceSource记录程序日志
查看>>
【Source教程】GCFScape下载安装与使用
查看>>
数据结构 单链表反转 回顾练习
查看>>
N!分解素因子及若干问题
查看>>
主动对象
查看>>
C++ string int 转换 split
查看>>
网站繁简切换的JS遇到的一个BUG
查看>>
Docker容器技术
查看>>
五秒后页面自动跳转
查看>>
压力测试、负载测试、性能测试
查看>>
牛客网 反序相等题解
查看>>
分布式版本控制系统Mercurial(二):web server的架设
查看>>
用php做管理后台
查看>>
Linux下Java程序运行环境搭建及相关配置【JDK+Tomcat+MySQL】
查看>>
python3基础系列之六【python推导式】
查看>>
YAML格式介绍
查看>>