【hdu2896】病毒侵袭
来源:互联网 发布:java io 实现断点续传 编辑:程序博客网 时间:2024/06/05 03:34
我的内心几乎是崩溃!!
AC自动机模板题
一开始给每个叶子开了26个儿子,后来RE了,发现没有规定必须是小写字母,然后改成130,突然觉得这道题卡内存啊,写完之后果真MLE了,看了别人的博客发现跟我开同样大的数组大小没有事,猛然想到去掉memset这样的话只会有100000个结点,所以不会MLE。
此时大概已经这道题已经写了40分钟左右了,然后我就开始崩溃了,自测各种数据不出错,交上去不停WA,于是搜到了zyf2000的博客,照着她的程序改,= =本来我AC自动机的模板就是找着她打的而且码风和她很像(大括号换行嘿嘿,zyz是不换行的异端),直到改到和她变量名不同,其他完全相同的时候,还是在WA,我想难道有不规范的关键字,然后又交了一遍,忽然想到是不是输出的单词的问题,整个人都懵逼了,赶快检查自己的程序,web没有问题啊,total!!!!我简直想抽自己一巴掌,于是这道题写了整整两个小时,整个人都不好了,蓝瘦,日了假狗(捂脸)。
贴上改到和zyf2000基本完全相同的代码。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;const int N=100005;int ch[N][130],n,m,sz,fl[N],ed[N],cnt,ans[N];bool vis[N];char s[N];queue<int>q;void insert(int id){ int len=strlen(s),now=0; for (int i=0;i<len;++i) { int x=s[i]; if (!ch[now][x])ch[now][x]=++sz; now=ch[now][x]; } ed[now]=id;}void make_fail(){ while(!q.empty()) q.pop(); for (int i=0;i<=128;++i) if (ch[0][i])q.push(ch[0][i]); while(!q.empty()) { int now=q.front();q.pop(); for (int i=0;i<=128;++i) { if (!ch[now][i]) { ch[now][i]=ch[fl[now]][i]; continue; } fl[ch[now][i]]=ch[fl[now]][i]; q.push(ch[now][i]); } }}void ac(){ int len=strlen(s),now=0; for (int i=0;i<len;++i) { vis[now]=1; int x=s[i]; int y=ch[now][x]; while (y&&!vis[y]) { vis[y]=1; if (ed[y])ans[++ans[0]]=ed[y]; y=fl[y]; } now=ch[now][x]; }}int main(){ scanf("%d\n",&n); for (int i=1;i<=n;++i) { gets(s); insert(i); } scanf("%d\n",&m); make_fail(); for (int j=1;j<=m;++j) { gets(s); ans[0]=0; memset(vis,0,sizeof(vis)); ac(); if (ans[0]) { printf("web %d: ",j); sort(ans+1,ans+ans[0]+1); for (int i=1;i<=ans[0];++i) printf("%d%c",ans[i]," \n"[i==ans[0]]); ++cnt; } } printf("total: %d\n",cnt);}
0 0
- hdu2896 病毒侵袭
- hdu2896 病毒侵袭
- HDU2896--病毒侵袭
- hdu2896(病毒侵袭)
- hdu2896 病毒侵袭
- 【hdu2896】病毒侵袭
- HDU2896病毒侵袭
- HDU2896-病毒侵袭
- HDU2896 病毒侵袭
- 【AC自动机】 hdu2896 病毒侵袭
- 【hdu2896】【AC自动机】病毒侵袭
- HDU2896(病毒侵袭--AC自动机)
- HDU2896 病毒侵袭 AC自动机
- AC自动机 病毒侵袭 hdu2896
- hdu2896---病毒侵袭(AC自动机)
- HDU2896 病毒侵袭 AC自动机
- HDU2896 病毒侵袭【AC自动机】
- HDU2896-病毒侵袭 AC自动机
- struts2标签库详解
- 谷哥的小弟学后台(14)——HttpSession
- linux十一十二单元作业
- 关闭DrawerLayout的手势滑动
- 改变exe文件图标的方法
- 【hdu2896】病毒侵袭
- 阮小二买彩票
- pat a1007
- ACM-skew数(数制转化问题)
- android cmd 下命令行
- linux grep命令详解
- 安装Microsoft Hololens开发环境
- 【JQuery】动态控制页面元素
- 简单谈谈JavaScript中的this