AC自动机模板
来源:互联网 发布:哪呢儿软件下载 编辑:程序博客网 时间:2024/06/11 01:39
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <queue>#include<ctime>#define N 10000090using namespace std;int n;int date[5000500][26],fail[N],cnt[N],tot=0,ans=0;int st,pt;char str[N],ptr[N];queue<int> q;void build(){ for(int i=0;i<26;i++) if(date[0][i]) q.push(date[0][i]); while(!q.empty()) { int re=q.front();q.pop(); for(int i=0;i<26;i++) { if(!date[re][i]) { date[re][i]=date[fail[re]][i];//直接跳转避免while continue; } q.push(date[re][i]); fail[date[re][i]]=date[fail[re]][i]; } }}int main(){ double a=clock(); freopen("in.in","r",stdin); freopen("my.out","w",stdout); scanf("%d",&n); while(n--) { scanf("%s",str+1);st=strlen(str+1); int j=0; for(int i=1;i<=st;i++) { if(!date[j][str[i]-'a']) date[j][str[i]-'a']=++tot; j=date[j][str[i]-'a']; } cnt[j]++; } build(); scanf("%s",ptr+1);pt=strlen(ptr+1); int j=0; for(int i=1;i<=pt;i++) { j=date[j][ptr[i]-'a']; for(int t=j; t && cnt[t]!=-1;t=fail[t]) { ans+=cnt[t];cnt[t]=-1; } } cout<<ans<<endl; cout<<clock()-a<<endl; return 0;}
阅读全文
0 0
- 【AC自动机】AC自动机模板
- AC自动机模板
- AC自动机模板
- AC自动机模板
- AC自动机模板
- AC自动机模板
- AC自动机模板
- AC自动机模板 hdu2222
- AC自动机模板
- AC自动机模板
- 数据结构--AC自动机--模板
- ac自动机模板
- AC自动机模板
- AC自动机模板
- hdu2222 ac自动机模板
- ac自动机模板。。。。。
- AC自动机模板 LA4670
- AC自动机模板
- 安卓应用下载自动安装代码
- GCD相关
- BZOJ3922 Karin的弹幕 [线段树]
- domain、entity和model的package的不同用法?
- Redis实战之多用户聊天室
- AC自动机模板
- Python3在win7下生成云图 学习python过程以及坑
- thinkphp5实战系列(三)入口文件隐藏和url路由优化
- ご馳走になる vs ご馳走する vs ご馳走様でした
- Android ViewPager Fragment 切换刷新数据,解决生命周期只走一次的问题
- 设计模式--观察者模式
- SpringMVC与LogBack集成
- HTML怎么让table表格中的td单元格内容过长显示为固定长度,多余部分用省略号代替?
- bug & 异常 小记集合