HDU 2222 AC自动机 模板
来源:互联网 发布:pc摄像机软件 编辑:程序博客网 时间:2024/05/17 01:11
AC自动机模板题。
#include <cstdio>#include <cstring>#include <algorithm>#include <queue>using namespace std;const int maxn=1000005;const int maxm=500005;int T,n;char s[maxn];struct Aho { struct state { int next[26],cnt,fail; } stateTable[maxm]; int size; void init() { memset(stateTable,0,sizeof stateTable); size=0; } void insert(char *S) { int n=strlen(S),now=0; for (int i=0;i<n;++i) { int id=S[i]-'a'; if (!stateTable[now].next[id]) stateTable[now].next[id]=++size; now=stateTable[now].next[id]; } ++stateTable[now].cnt; } void build() { queue<int> que; stateTable[0].fail=-1; for (int i=0;i<26;++i) if (stateTable[0].next[i]) { que.push(stateTable[0].next[i]); stateTable[stateTable[0].next[i]].fail=0; } while (!que.empty()) { int now=que.front(); que.pop(); for (int i=0;i<26;++i) { int o=stateTable[now].next[i]; if (o) { int v=stateTable[now].fail; while (v!=-1) { if (stateTable[v].next[i]) { stateTable[o].fail=stateTable[v].next[i]; break; } v=stateTable[v].fail; } if (v==-1) stateTable[o].fail=0; que.push(o); } } } } int get(int now) { int ret=0; while (now!=-1) { ret+=stateTable[now].cnt; stateTable[now].cnt=0; now=stateTable[now].fail; } return ret; } int search(char *S) { int n=strlen(S),now=0,ret=0; for (int i=0;i<n;++i) { int id=S[i]-'a'; if (stateTable[now].next[id]) now=stateTable[now].next[id]; else { int v=stateTable[now].fail; while (v!=-1) { if (stateTable[v].next[id]) { now=stateTable[v].next[id]; break; } v=stateTable[v].fail; } if (v==-1) now=0; } if (stateTable[now].cnt) ret+=get(now); } return ret; }} aho;int main(){ scanf("%d",&T); while (T--) { scanf("%d",&n); aho.init(); while (n--) { scanf("%s",s); aho.insert(s); } aho.build(); scanf("%s",s); printf("%d\n",aho.search(s)); } return 0;}
阅读全文
0 0
- hdu 2222(AC自动机模板)
- HDU - 2222 AC 自动机模板
- HDU 2222 AC自动机模板
- hdu 2222 ac自动机模板
- hdu 2222 ac自动机 模板
- hdu 2222 ac自动机模板
- HDU 2222 AC自动机模板
- HDU 2222 AC自动机 模板
- AC自动机 模板 hdu 2222
- HDU 2222 AC自动机 模板
- HDU 2222【AC自动机模板】
- 【AC自动机详解+入门模板】HDU 2222
- hdu 2222 Keywords Search AC自动机 模板
- hdu 2222 Keywords Search AC自动机 模板
- hdu 2222 Keywords Search(AC自动机模板)
- HDU 2222 Keywords Search 【AC自动机模板】
- hdu 2222 AC自动机模板题
- hdu 2222 AC自动机模板题
- 杭电1012求e
- 小明の魔法计划
- Linux 自带编辑器 vi
- java—模拟银行账户业务—类的带参方法
- 自己模拟一个简易的spring框架
- HDU 2222 AC自动机 模板
- 我的第一篇博客
- 各种同步方法性能比较(synchronized ReentrantLock Atomic)
- codeforces 7C Line 扩展欧几里德 Java
- 摄像头识别手写数字
- 生成,使用jar包
- ROS机器人Diego 1# 利用人工智能 风格迁移技术拍摄不同画风的视频
- Hibernate中的cascade级联属性一对多多对一的增删改过程探讨
- Uncowed Forces 【水题】