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. vue2.0 vue-cli项目中路由之间的参数传递

    1.首先配置路由, import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) export default new R ...

  3. [剑指Offer] 19.顺时针打印矩阵

    [思路]本题关键在于 右->左 和 下->上 两个循环体中的判断条件,即判断是否重复打印. class Solution { public: vector<int> print ...

  4. log4j的常用使用方法

    第一步,引入jar包,不做介绍. 第二步,创建以下类(固定写法) package smn.util; import org.apache.log4j.Logger; public class MyLo ...

  5. Codeforces 662C(快速沃尔什变换 FWT)

    感觉快速沃尔什变换和快速傅里叶变换有很大的区别啊orz 不是很明白为什么位运算也可以叫做卷积(或许不应该叫卷积吧) 我是看 http://blog.csdn.net/liangzhaoyang1/ar ...

  6. 【BZOJ 3316】JC loves Mkk 01分数规划+单调队列

    单调栈不断吞入数据维护最值,数据具有单调性但不保证位置为其排名,同时可以按照进入顺序找出临近较值单调队列队列两端均可删除数据但只有队末可以加入数据,仍然不断吞入数据但同时可以额外刨除一些不符合条件的数 ...

  7. HDU 1203 01背包

    I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  8. tyvj1305 最大子序和(单调队列

    题目地址:http://www.joyoi.cn/problem/tyvj-1305 最大子序和 题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Loc ...

  9. nodejs npm insttall 带不带-g这个参数的区别

    -g 中的g是global的意思所以带-g这个参数是全局安装,不带-g这个参数是本地安装. 在windows系统中全局安装的目录在:C:\Users\linsenq\AppData\Roaming\n ...

  10. mysql__索引的设计和使用

    索引的设计和使用 1 索引概述 MySIAM和InnoDB存储引擎的表默认创建的都是BTREE索引,MySQL目前不支持函数索引,但是支持前缀索引.还支持全文本索引,但是只有MySIAM(5.0开始) ...