2896

思路:

  好题;

代码:

#include <queue>
#include <cstdio>
#include <cstring> using namespace std; #define maxn 100001 int ne[][],tag[],fail[],n,tot,m,ans; char ch[maxn]; bool vis[],out,sc[]; queue<int>que; int main()
{
int i,j,len,now,temp;
scanf("%d",&n);
tot=,ans=;getchar();
for(i=;i<=n;i++)
{
gets(ch);
len=strlen(ch);
now=;
for(j=;j<len;j++)
{
if(!ne[now][ch[j]]) ne[now][ch[j]]=++tot;
now=ne[now][ch[j]];
}
tag[now]=i;
}
que.push();
while(!que.empty())
{
now=que.front();que.pop();
for(i=;i<;i++)
{
if(!ne[now][i]) continue;
if(now==) fail[ne[now][i]]=now;
else
{
temp=fail[now];
while(temp)
{
if(ne[temp][i])
{
fail[ne[now][i]]=ne[temp][i];
break;
}
temp=fail[temp];
}
if(!temp) fail[ne[now][i]]=;
}
que.push(ne[now][i]);
}
}
scanf("%d",&m);getchar();
for(i=;i<=m;i++)
{
out=false;
for(j=;j<=n;j++) sc[j]=false;
for(j=;j<;j++) vis[j]=false;
gets(ch);
len=strlen(ch),now=;
for(j=;j<len;j++)
{
if(ne[now][ch[j]]) now=ne[now][ch[j]];
else
{
temp=fail[now];
while(temp)
{
if(ne[temp][ch[j]])
{
now=ne[temp][ch[j]];
break;
}
temp=fail[temp];
}
if(!temp) now=;
}
temp=now;
while(!vis[temp])
{
vis[temp]=true;
if(!sc[tag[temp]]&&tag[temp]) out=true,sc[tag[temp]]=true;
temp=fail[temp];
}
}
if(out)
{
printf("web %d:",i);
for(j=;j<=n;j++) if(sc[j]) printf(" %d",j);
printf("\n"),ans++;
}
}
printf("total: %d\n",ans);
return ;
}

AC日记——病毒侵袭 hdu 2896的更多相关文章

  1. 病毒侵袭 - HDU 2896(AC自动机)

    分析:有点需要注意的,输入的字符是所有可见的ASCII码,刚开始没看清一直以为是小写字母.............注意到这点后这题就是裸的自动机了.   代码如下: ================= ...

  2. 病毒侵袭 HDU - 2896(ac自动机 板题)

    当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻....在这样的时刻,人们却异常兴奋——我们能在有生之年看到500年一遇的世界奇观,那是多么幸福的事儿啊~~ 但网路上总有那么些网站,开 ...

  3. AC日记——病毒侵袭持续中 hdu 3065

    3065 思路: 好题: 代码: #include <queue> #include <cstdio> #include <cstring> using names ...

  4. 病毒侵袭 HDU - 2896 板子题

    当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻....在这样的时刻,人们却异常兴奋--我们能在有生之年看到500年一遇的世界奇观,那是多么幸福的事儿啊~~ 但网路上总有那么些网站,开 ...

  5. AC自动机---病毒侵袭持续中

    HDU 3065 题目网址: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=110773#problem/C Description 小t ...

  6. AC自动机---病毒侵袭

    HDU 2896 题目网址: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=110773#problem/B Description 当太 ...

  7. AC日记——Keywords Search hdu 2222

    2222 思路: ac自动机模板题: 代码: #include <cstdio> #include <cstring> #include <iostream> #i ...

  8. AC日记——Number Sequence hdu 1711

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  9. AC日记——统计难题 hdu 1251

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submi ...

随机推荐

  1. Nginx代理实现跨域

    #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...

  2. Sigar应用

    sigar是一个用于获取底层硬件信息比如:CPU,内存,硬盘,网络等等信息的库.其官网如下: https://support.hyperic.com/display/SIGAR/Home   出于项目 ...

  3. 洛谷 P3203 [HNOI2010]弹飞绵羊 解题报告

    P3203 [HNOI2010]弹飞绵羊 题目描述 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一 ...

  4. 洛谷 P2218 [HAOI2007]覆盖问题 解题报告

    P2218 [HAOI2007]覆盖问题 题目描述 某人在山上种了\(N\)棵小树苗.冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的思考,他 ...

  5. 【BZOJ 3232】圈地游戏 二分+SPFA判环/最小割经典模型

    最小割经典模型指的是“一堆元素进行选取,对于某个元素的取舍有代价或价值,对于某些对元素,选取后会有额外代价或价值”的经典最小割模型,建立倒三角进行最小割.这个二分是显然的,一开始我也是想到了最小割的那 ...

  6. [spoj DISUBSTR]后缀数组统计不同子串个数

    题目链接:https://vjudge.net/contest/70655#problem/C 后缀数组的又一神奇应用.不同子串的个数,实际上就是所有后缀的不同前缀的个数. 考虑所有的后缀按照rank ...

  7. spring中<bean>中parent标签的使用

    简介:spring 中parent标签是指:某个<bean>的父类.这个类可以覆盖parent的属性, 代码如下: Parent类的代码如下: package com.timo.domai ...

  8. egrep对于conf文件中去掉#注释,排除无用项

    [root@localhost conf]# egrep -v "#|^$" nginx.conf.default > nginx.conf dd

  9. tomcat内存配置(二)

    Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机.Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对JavaJVM有关内存方面的知识进 ...

  10. source改变当前路径

    转摘自:http://hi.baidu.com/homappy/item/90e416525d2faf958c12edb7 Shell 脚本执行有三种方法 bash 脚本名 sh 脚本名 chmod ...