题面
【题目描述】
给定n个长度不超过50的小写字母组成的单词,以及一篇长为m的文章,问有多少个单词在文章出现。
输入
第一行一个整数T,表示测试数据组数。
对于每组测试数据,每一行一个整数n,接下去n行n个单词,最后一行输入一个字符串,表示文章。
【输出】
对于每组测试数据,输出一个数,表示有多少个单词在文章中出现。
【样例输入】
1
5
she
he
say
shr
her
yasherhs
【样例输出】
3
提示
n<=104,m<=106n<=10^4,m<=10^6n<=104,m<=106
算法分析
AC自动机模板
参考程序
写法一
#include<bits/stdc++.h>
using namespace std;
const int N=1000010;
int trie[N][26],tot=1,vis[N],nxt[N];
int n,T;
char s[N];
queue<int> q;
void built()
{
int len=strlen(s);
int u=1; //根节点
for(int i=0;i<len;i++)
{
int v=s[i]-'a';
if(trie[u][v]==0) trie[u][v]=++tot;//根节点为1,tot初始化一定设为1
u=trie[u][v];
}
vis[u]++; //结束标记
}
void bfs()
{
for(int i=0;i<=25;i

本文详细解析了AC自动机的实现原理与应用,通过具体题目示例,介绍了AC自动机的构建过程、优化技巧及搜索算法,适用于字符串匹配问题。
最低0.47元/天 解锁文章
307

被折叠的 条评论
为什么被折叠?



