Keywords Search  HDU - 2222

贴个vj的链接https://vjudge.net/problem/HDU-2222

题意:T组数据,n个单词,再给你一个串,看有几个单词在这个串里面出现过

Sample Input

1
5
she
he
say
shr
her
yasherhs

Sample Output

3

#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
using namespace std; const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3f; const int N = 5e5 + 1000;
int fa[N], trie[N][30], tot, vis[N]; void build(string s){
int len = s.size();
int pos = 0;
for(int i = 0; i < len; i++){
int son = s[i] - 'a';
if(!trie[pos][son]) trie[pos][son] = ++tot;
pos = trie[pos][son];
}
vis[pos]++;
}
void getfail(){
queue<int> q;
for(int i = 0, p; i < 26; i++){
p = trie[0][i];
if(p){
fa[p] = 0;
q.push(p);
}
}
while(q.size()){
int now = q.front();
q.pop();
for(int i = 0; i < 26; i++){
int u = trie[now][i];
if(u){
q.push(u);
fa[u] = trie[fa[now]][i];
}
else trie[now][i] = trie[fa[now]][i];
}
}
} int getans(string s){
int now = 0, ans = 0;
for(int i = 0; i < s.size(); i++){
now = trie[now][s[i]-'a'];
for(int j = now; j && vis[j]!=-1; j = fa[j]){
ans+=vis[j];
vis[j] = -1;
}
}
return ans;
} int main(){
int t; cin >> t;
fa[0] = 0;
while(t--){
memset(trie, 0, sizeof(trie));
memset(vis, 0, sizeof(vis));
tot = 0;
int n; cin >> n;
string s;
for(int i = 1; i <= n; i++){
cin >> s;
build(s);
}
getfail();
cin >> s;
cout << getans(s) << endl;
}
}

AC自动机模板题 HDU - 2222的更多相关文章

  1. HDU 2222 AC自动机模板题

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=2222 AC自动机模板题 我现在对AC自动机的理解还一般,就贴一下我参考学习的两篇博客的链接: http: ...

  2. HDU 2222(AC自动机模板题)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2222 题目大意:多个模式串.问匹配串中含有多少个模式串.注意模式串有重复,所以要累计重复结果. 解题 ...

  3. HDU 3065 (AC自动机模板题)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3065 题目大意:多个模式串,范围是大写字母.匹配串的字符范围是(0~127).问匹配串中含有哪几种模 ...

  4. HDU 2896 (AC自动机模板题)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2896 题目大意:多个模式串.多个匹配串.其中串的字符范围是(0~127).问匹配串中含有哪几个模式串 ...

  5. HDU3695(AC自动机模板题)

    题意:给你n个字符串,再给你一个大的字符串A,问你着n个字符串在正的A和反的A里出现多少个? 其实就是AC自动机模板题啊( ╯□╰ ) 正着query一次再反着query一次就好了 /* gyt Li ...

  6. HDu-2896 病毒侵袭,AC自动机模板题!

    病毒侵袭 模板题,不多说了.. 题意:n个不同的字符串分别代表病毒特征,给出m次查询,每次一个字符串(网址),求这个字符串中有几个病毒特征,分别从大到小输出编号,最后输出所有的带病毒网址个数.格式请看 ...

  7. [Bzoj3940] [AC自动机,USACO 2015 February Gold] Censor [AC自动机模板题]

    AC自动机模板题(膜jcvb代码) #include <iostream> #include <algorithm> #include <cstdio> #incl ...

  8. HDU 2222 (AC自动机模板题)

    题意: 给一个文本串和多个模式串,求文本串中一共出现多少次模式串 分析: ac自动机模板,关键是失配函数 #include <map> #include <set> #incl ...

  9. HDU 2222 Keywords Search(AC自动机模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=2222 题意:给出多个单词,最后再给出一个模式串,求在该模式串中包含了多少个单词. 思路: AC自动机的模板题. ...

  10. AC自动机 - 多模式串匹配问题的基本运用 + 模板题 --- HDU 2222

    Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

随机推荐

  1. TypeScript 合并以及删除数组数据

    1.添加 concat() 2.删除(替换) splice() array.splice(index,int,any) index 是 array数组起始位置的index(从0开始) int是操作从i ...

  2. ufw-防火墙添加22端口

    sudo ufw allow ssh/tcp 或 ufw allow 22/tcp 添加拒绝规则也是同样的招数.我们假设你想拒绝 ftp 访问, 你只需输入 sudo ufw deny ftp

  3. JS篇(004)-js 是一门怎样的语言,它有什么特点?

    答案: 1.脚本语言.JavaScript 是一种解释型的脚本语言,C.C++等语言先编译后执行,而 JavaScript 是在程序的运行过程中逐行进行解释. 2.基于对象.JavaScript 是一 ...

  4. python3.7 sorted 自定义排序

    from functools import cmp_to_keyls=['9','23','3','56','78']sorted(ls, key=cmp_to_key(lambda x, y: in ...

  5. 模态框拖拽案例分析--元素偏移量 offset 系列

    弹出框,我们也称为模态框. 模态框拖拽案例分析: (1)点击弹出层, 会弹出模态框, 并且显示灰色半透明的遮挡层. (2)点击关闭按钮,可以关闭模态框,并且同时关闭灰色半透明遮挡层. (3)鼠标放到模 ...

  6. ajax异步参数详解及alax错误信息error分析

    一.$.ajax()的参数列表 ↑ 下面是Jquery中AJAX参数详细列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: & ...

  7. Linux 使用vsftpd服务传输文件

    文件传输协议 FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20.21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命 ...

  8. defer、panic、recover

    defer(延迟执行语句) 多个延迟执行语句的处理顺序 package main import ( "fmt" ) func main() { fmt.Println(" ...

  9. fiddler 实现跨域

    static function OnBeforeResponse(oSession: Session) { ... if(oSession.uriContains("要处理的url" ...

  10. PVE设置硬盘休眠并解决经常唤醒问题

    查询硬盘编号: ls -l /dev/disk/by-id/ 查询硬盘状态: smartctl -i -n standby /dev/sda |grep "mode"|awk '{ ...