我表示不是很懂HDU卡内存的优良传统.......以及他们卡输出的良好风尚........

AC自动机裸体关键在于http://ascii.911cha.com/

#include<cstring>
#include<cstdio>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
struct Trie
{Trie *ch[95],*fail,*last;int who,had;Trie(){memset(ch,0,sizeof(ch));fail=last=NULL;who=had=0;}
}*root,*q[70005];
int n,m;
char c[200],w[10005];
inline void insert(char *s,int x)
{int len=strlen(s);Trie *now=root;for(int i=0;i<len;i++){if(now->ch[s[i]-32]==NULL)now->ch[s[i]-32]=new Trie();now=now->ch[s[i]-32];}now->who=x;
}
inline void build()
{q[0]=root;for(int i=0,j=0;i<=j;i++)for(int l=0;l<95;l++)if(q[i]->ch[l]){Trie *now=q[i]->fail;while(now&&!now->ch[l])now=now->fail;q[++j]=q[i]->ch[l];q[j]->fail=now?now->ch[l]:root;q[j]->last=q[j]->who?q[j]:q[j]->fail->last;}elseq[i]->ch[l]=q[i]==root?root:q[i]->fail->ch[l];
}
inline void Init()
{root=new Trie();scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%s",c);insert(c,i);}build();
}
vector<int> have;
int ans;
inline void job(int x)
{scanf("%s",w);int len=strlen(w);have.clear();Trie *now=root;for(int i=0;i<len;i++){now=now->ch[w[i]-32];for(Trie *Now=now->last;Now;Now=Now->last)if(Now->had!=x)have.push_back(Now->who),Now->had=x;elsebreak;}if(have.empty())return;printf("web %d:",x);ans++;sort(have.begin(),have.end());for(int j=0;j<have.size();j++)printf(" %d",have[j]);printf("\n");
}
inline void work()
{scanf("%d",&m);for(int i=1;i<=m;i++)job(i);
}
inline void print()
{printf("total: %d\n",ans);
}
int main()
{Init();    work();print();return 0;
}

转载于:https://www.cnblogs.com/TSHugh/p/7131565.html

HDU 2896 病毒侵袭 AC自动机相关推荐

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

    题目链接:点击查看 题目大意:给出 n 个模式串,再给出 m 个匹配串,问有多少个模式串在匹配串中出现,需要分别对应上其编号 题目分析:对应编号问题我们可以直接开一个数组映射,也是比较经典的模板问题了 ...

  2. HDU 2896 病毒侵袭 AC自己主动机题解

    本题是在text里面查找key word的增强版.由于这里有多个text. 那么就不能够简单把Trie的叶子标志记录改动成-1进行加速了,能够使用其它技术.我直接使用个vis数组记录已经訪问过的节点, ...

  3. hdu 2896 病毒侵袭

    http://acm.hdu.edu.cn/showproblem.php?pid=2896 AC自动机的简单题...忘记关debug了,wa了一次...囧! View Code 1 #include ...

  4. hdu 2896 病毒侵袭(AC自动机)

    病毒侵袭                                                                           Time Limit: 2000/1000 ...

  5. HDU 2896 病毒侵袭(AC自动机/模板题)

    传送门 病毒侵袭 Time Limit: 2000/1000 MS (Java/Others)            Memory Limit: 131072/131072 K (Java/Other ...

  6. hdu2896 病毒侵袭 ac自动机

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=2896 题目: 病毒侵袭 Time Limit: 2000/1000 MS (Java/Othe ...

  7. hduoj-----(2896)病毒侵袭(ac自动机)

    病毒侵袭 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  8. HDU 2896病毒侵袭

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

  9. HDU2896(病毒侵袭--AC自动机)

    题目:病毒侵袭 #include <iostream> #include <string.h> #include <stdio.h> #include <al ...

最新文章

  1. github开源项目分享
  2. Eclipse 菜单
  3. 【302天】跃迁之路——程序员高效学习方法论探索系列(实验阶段60-2017.12.04)...
  4. HDU4741(异面直线间的距离--空间解析几何)
  5. javascript this指针指向?
  6. [蓝桥杯历届试题] 国庆星期日
  7. pve安装黑群晖直通硬盘_蜗牛星际装机教程篇三:手把手教你安装黑群晖NAS
  8. 第一位女性商业程序员玛丽库姆斯去世,享年 93 岁
  9. Directx11教程(33) 纹理映射(3)
  10. mpvue开发坑点总结
  11. java中String类和StringBuffer类实例详解
  12. 78 python - 打飞机案例(让敌机移动)
  13. Hubble数据库x某股份制商业银行 信用卡反欺诈项目构建2.4亿条社交网络库
  14. Reapp 混合应用 - 帮助构建前所未所的强大应用(Reapp Hybrid apps - help you build powerful apps like never before)
  15. SQL语句编写经典50题
  16. 财务机器人RPA推动财务职能转换
  17. 计算机桌面打标签,桌面记事本,详细教您怎么在桌面添加便签
  18. 像写诗一样写代码:扁平化管理你的代码
  19. 计算机教育软件参评作品例子,关于转发《关于举办滁州学院2012年教育软件评比活动的通知》的通知...
  20. android bitmap 色温,3A之自动白平衡(AWB)篇

热门文章

  1. [恢]hdu 1259
  2. Makefile 中:= ?= += =的区别
  3. 屏蔽控制台应用程序的窗口#pragma comment(linker, /subsystem:windows /ENTRY:mainCRTStartup)...
  4. mount.nfs: Remote I/O error
  5. 以太坊 p2p Server 原理及实现
  6. ES6中this的三种用法
  7. php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
  8. MATLAB 数据分析方法(第2版)1.3 MATLAB基本语法
  9. linux下的QQ执行玩法:pidgin-lwqq
  10. 重温JavaScript