HDU-2222-Aho-Corasick--自动机
来源:互联网 发布:机柜网络模块接线图 编辑:程序博客网 时间:2024/05/01 08:15
模板题目
理解了AC自动机之后感觉这真是一个奇妙的东西▼o・ェ・o▼
参考 http://blog.csdn.net/zxy_snow/article/details/6709255
#include<iostream>#include<cstring>#include<cstdio>#include<queue>using namespace std;const int SIGMA_SIZE = 26;struct node{node * ch[SIGMA_SIZE];node * back;int cnt;node(){back=NULL;cnt=0;for(int i=0;i<SIGMA_SIZE;i++)ch[i]=NULL;}};node * root;int idx(const char c){return c-'a';}void insert(const char *s){int c,len =strlen(s);node *u=root;for(int i=0;i<len;i++){c=idx(s[i]);if(u->ch[c]==NULL){u->ch[c]=new node();}u=u->ch[c];}u->cnt++;}void getFail(){queue<node *> q;q.push(root);node *now,*p;while(!q.empty()){now=q.front();q.pop();for(int i=0;i<SIGMA_SIZE;i++){if(now->ch[i]){p=now->back;while(p){if(p->ch[i]){now->ch[i]->back=p->ch[i];break;}p=p->back;}if(p==NULL)now->ch[i]->back = root;q.push(now->ch[i]);}}}}int ans =0 ;void find(const char *t){ans=0;node * u=root;int len = strlen(t);for(int i=0;i<len;i++){int c = idx(t[i]);while(u->ch[c]==NULL&&u!=root){u=u->back;}u=u->ch[c]==NULL?root:u->ch[c];node * temp = u;while(temp!=root&&temp->cnt>0){ans+=temp->cnt;temp->cnt=-1;temp = temp->back;}}}char t[1000090];int main(){freopen("data.in","r",stdin);char s[100];int n,T;scanf("%d",&T);while(T--){root=new node();scanf("%d",&n);while(n--){scanf("%s",s);insert(s);}getFail();scanf("%s",t);find(t);printf("%d\n", ans);}return 0;}
板子留着
- HDU-2222-Aho-Corasick--自动机
- Hdu 2222 Keywords Search//Aho-Corasick 自动机
- Hdu 2896 病毒侵袭//Aho-Corasick 自动机
- Aho-Corasick 自动机
- Aho-Corasick automation,AC 自动机
- Aho-Corasick自动机算法(简称AC自动机
- AC自动机(Aho-Corasick automaton)
- AC自动机(Aho-Corasick Automaton Algorithm)
- AC自动机——Aho-Corasick Automaton
- 深入理解Aho-Corasick自动机算法
- 【AC自动机】:Aho-Corasick算法的实现
- Aho-Corasick自动机算法(AC算法解读)
- 使用Python实现Aho-corasick自动机
- Aho-Corasick
- AC自动机(Aho-Corasick automation)(转)
- 【算法笔记】Aho-Corasick 算法(AC自动机) 小结
- Aho-Corasick 多模式匹配算法、AC自动机详解
- Aho-Corasick 多模式匹配算法、AC自动机详解
- 女扒手在内衣店中被抓时购物袋里装着死婴
- poj 1611 - The Suspects(并查集)
- 魏小亮:国内软件工程师如何面试硅谷创业公司
- iOS7中的ViewController切换
- 关于酷派8730“移动版”手机无法将应用安装在外置SD卡的解决办法和获取ROOT权限方法
- HDU-2222-Aho-Corasick--自动机
- 魏小亮:如何选择硅谷的IT公司
- 【Cocosd2d实例教程六】Cocos2d实现屏幕背景的自动滚动
- eclipse快捷键——Ctrl+Shift+F 格式化当前代码
- UMX Viewer
- 输入整数数组,调整顺序,使得奇数位于前半部分,偶数位于后半部分
- struts.xml配置文件中action中的result的各种转发类型
- java的excel导出[poi]
- 文本文件与二进制文件