知识点:1.一定要删掉调试信息

       2.数组别重名

code:

#include <bits/stdc++.h>
using namespace std;
int n;
int len[];
char c[];
char a[][];
int ans[];
struct ACtree
{
int cnt;
int f[],sfaf[];
int ch[][],val[];
void init()
{
cnt = ;
memset(f,,sizeof(f));
memset(sfaf,,sizeof(sfaf));
memset(ch,,sizeof(ch));
memset(val,,sizeof(val));
}
void insert(int t)
{
int u = ;
len[t] = strlen(a[t]);
for(int i = ;i < len[t];i++)
{
int k = a[t][i] - 'a';
if(!ch[u][k])
{
ch[u][k] = ++cnt;
u = ch[u][k];
}
else u = ch[u][k];
}
val[u] = t;
}
void getfail()
{
queue <int> q;
q.push();
while(!q.empty())
{
int u = q.front();
q.pop();
for(int i = ;i < ;i++)
{
int v = ch[u][i];
if(!v){ch[u][i] = ch[f[u]][i];continue;}
q.push(v);
f[v] = u?ch[f[u]][i]:;
sfaf[v] = val[f[v]]?f[v]:sfaf[f[v]];
}
}
}
void work()
{
int u = ;
int lena = strlen(c);
for(int i = ;i < lena;i++)
{
int k = c[i] - 'a';
u = ch[u][k];
if(val[u])
{
ans[val[u]]++;
}
int v = u;
while(sfaf[v])
{
v = sfaf[v];
if(val[v])
{
ans[val[v]]++;
}
}
}
}
}ac;
int main()
{//freopen("in.in","r",stdin);
while()
{
memset(ans,,sizeof(ans));
scanf("%d",&n);
if(!n)return ;
for(int i = ;i <= n;i++)
{
scanf("%s",a[i]);
ac.insert(i);
}
ac.getfail();
scanf("%s",c);
ac.work();
int maxn = ;
for(int i = ;i <= n;i++)
{
maxn = max(maxn,ans[i]);
}
printf("%d\n",maxn);
for(int i = ;i <= n;i++)
{
if(ans[i] == maxn){for(int j = ;j < len[i];j++)printf("%c",a[i][j]);printf("\n");}
}
ac.init();
}
return ;
}

  

luogu P3796 【模板】AC自动机(加强版)的更多相关文章

  1. luoguP3796[模板]AC自动机(加强版)

    传送门 ac自动机模板,可能我写的ac自动机是有点问题的,所以跑的有些慢 暴力跳fail统计 代码: #include<cstdio> #include<iostream> # ...

  2. luoguP3808[模板]AC自动机(简单版)

    传送门 ac自动机模板题,裸的多串匹配 代码: #include<cstdio> #include<iostream> #include<algorithm> #i ...

  3. 算法模板——AC自动机

    实现功能——输入N,M,提供一个共计N个单词的词典,然后在最后输入的M个字符串中进行多串匹配(关于AC自动机算法,此处不再赘述,详见:Aho-Corasick 多模式匹配算法.AC自动机详解.考虑到有 ...

  4. 模板 AC自动机

    题目描述 有$N$ 个由小写字母组成的模式串以及一个文本串$T$ .每个模式串可能会在文本串中出现多次.你需要找出哪些模式串在文本串$T$ 中出现的次数最多. 输入输出格式 输入格式: 输入含多组数据 ...

  5. 算法竞赛模板 AC自动机

    AC自动机基本操作 (1) 在AC自动机中,我们首先将每一个模式串插入到Trie树中去,建立一棵Trie树,然后构建fail指针. (2) fail指针,是穿插在Trie树中各个结点之间的指针,顾名思 ...

  6. [模板][P3796]AC自动机(加强版)

    Description: 输出有哪些模式串在文本串中出现次数最多,这个次数是多少 Hint: 多组数据,$ len_{文本串}<=10^6,\sum len_{模式串} <= 70*150 ...

  7. 【模板】AC自动机加强版

    题目大意:给定 N 个模式串和一个文本串,求每个模式串在文本串中出现的次数. 题解:文本串在自动机上匹配的过程中,记录下自动机上每一个状态被访问的次数.对于访问到的节点 i,则状态 i 的后缀中存在的 ...

  8. 洛谷.3808/3796.[模板]AC自动机

    题目链接:简单版,增强版 简单版: #include <cstdio> #include <cstring> const int N=1e6+5,S=26; char s[N] ...

  9. 模板—AC自动机

    #include<iostream> #include<cstdio> #include<cstring> using namespace std; struct ...

  10. 模板——AC自动机

    传送门:QAQQAQ 定义nxt[u]=v表示从u开始不断沿着失配边跳到的第一个是标记点的端点v,那么我们再匹配时沿着last跳,每跳到一个last,它就一定对应一个模式串,所以效率是非常高的. 和K ...

随机推荐

  1. python深挖65万人的明星贴吧,探究上万个帖子的秘密

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 最近一直在关注百度明星吧,发现很多有趣的帖子,于是我就想用python把这 ...

  2. 用python写网路爬虫 PDF高清完整版免费下载 Python基础教程免费电子书 python入门书籍免费下载

    <用python写网路爬虫PDF免费下载>PDF书籍下载 内容简介 作为一种便捷地收集网上信息并从中抽取出可用信息的方式,网络爬虫技术变得越来越有用.使用Python这样的简单编程语言,你 ...

  3. VSFTP问题解决

    支持 root 登录 在 /etc/vsftpd/{ftpusers,user_list} 中注释掉 root 添加 allow_writeable_chroot=YES, 允许在只读文件登录, 否则 ...

  4. XSS 渗透思路笔记

    了解XSS首先要了解HTML里面的元素:共有5种元素:空元素.原始文本元素. RCDATA元素.外来元素以及常规元素. 空元素area.base.br.col. command. embed.hr.i ...

  5. 栈及其简单应用(python代码)

    栈属于线性结构(Linear Struncture),要搞清楚这个概念,首先要明白”栈“原来的意思,如此才能把握本质."栈“者,存储货物或供旅客住宿的地方,可引申为仓库.中转站,所以引入到计 ...

  6. DeepLab系列

    论文: (DeepLabV1)Semantic image segmentation with deep convolutional nets and fully connected CRFs (De ...

  7. 基础类库积累--ExeclHelper类

    前言: 相信大家都玩过NPOI这个第三方组件,我就分享一下我平时使用的工具类,如果有不好的地方,请赐教! NPOI是什么? NPOI是一个开源的C#读写Excel.WORD等微软OLE2组件文档的项目 ...

  8. VS2005 如何打开VS2008的工程 2009-06-24 20:22

    大家都碰到过用2005打开2008的工程吧.2008打开2005是没有问题,但是反过来呢,却不可以.当用2005打开2008时,看着工具提示要进行工程转换心里高兴吧,当转换后发现工程无法加载是不是很居 ...

  9. 数据 恢复----判断Raid盘序及校验方向

    重组Raid(如何判断校验方向及盘序) 1. 常规左异结构[backward parity(反向奇偶校验--(静态))] 校验块:校验块从最后一块物理盘开始写起,然后依次往前面的盘中写入,当写到第一块 ...

  10. Java并发--final关键字

    一.final使用场景 final可以稀释变量,方法和类,用于便是修饰的内容一旦赋值之后不会再被改变,比如string类就是一个final类型的类. 二.final修饰变量 在Java中变量可以分为成 ...