HDU 2896 病毒侵袭 AC自动机
我表示不是很懂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自动机相关推荐
- HDU - 2896 病毒侵袭(AC自动机)
题目链接:点击查看 题目大意:给出 n 个模式串,再给出 m 个匹配串,问有多少个模式串在匹配串中出现,需要分别对应上其编号 题目分析:对应编号问题我们可以直接开一个数组映射,也是比较经典的模板问题了 ...
- HDU 2896 病毒侵袭 AC自己主动机题解
本题是在text里面查找key word的增强版.由于这里有多个text. 那么就不能够简单把Trie的叶子标志记录改动成-1进行加速了,能够使用其它技术.我直接使用个vis数组记录已经訪问过的节点, ...
- hdu 2896 病毒侵袭
http://acm.hdu.edu.cn/showproblem.php?pid=2896 AC自动机的简单题...忘记关debug了,wa了一次...囧! View Code 1 #include ...
- hdu 2896 病毒侵袭(AC自动机)
病毒侵袭 Time Limit: 2000/1000 ...
- HDU 2896 病毒侵袭(AC自动机/模板题)
传送门 病毒侵袭 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- hdu2896 病毒侵袭 ac自动机
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=2896 题目: 病毒侵袭 Time Limit: 2000/1000 MS (Java/Othe ...
- hduoj-----(2896)病毒侵袭(ac自动机)
病毒侵袭 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU 2896病毒侵袭
当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻....在这样的时刻,人们却异常兴奋--我们能在有生之年看到500年一遇的世界奇观,那是多么幸福的事儿啊~~ 但网路上总有那么些网站, ...
- HDU2896(病毒侵袭--AC自动机)
题目:病毒侵袭 #include <iostream> #include <string.h> #include <stdio.h> #include <al ...
最新文章
- github开源项目分享
- Eclipse 菜单
- 【302天】跃迁之路——程序员高效学习方法论探索系列(实验阶段60-2017.12.04)...
- HDU4741(异面直线间的距离--空间解析几何)
- javascript this指针指向?
- [蓝桥杯历届试题] 国庆星期日
- pve安装黑群晖直通硬盘_蜗牛星际装机教程篇三:手把手教你安装黑群晖NAS
- 第一位女性商业程序员玛丽库姆斯去世,享年 93 岁
- Directx11教程(33) 纹理映射(3)
- mpvue开发坑点总结
- java中String类和StringBuffer类实例详解
- 78 python - 打飞机案例(让敌机移动)
- Hubble数据库x某股份制商业银行 信用卡反欺诈项目构建2.4亿条社交网络库
- Reapp 混合应用 - 帮助构建前所未所的强大应用(Reapp Hybrid apps - help you build powerful apps like never before)
- SQL语句编写经典50题
- 财务机器人RPA推动财务职能转换
- 计算机桌面打标签,桌面记事本,详细教您怎么在桌面添加便签
- 像写诗一样写代码:扁平化管理你的代码
- 计算机教育软件参评作品例子,关于转发《关于举办滁州学院2012年教育软件评比活动的通知》的通知...
- android bitmap 色温,3A之自动白平衡(AWB)篇
热门文章
- [恢]hdu 1259
- Makefile 中:= ?= += =的区别
- 屏蔽控制台应用程序的窗口#pragma comment(linker, /subsystem:windows /ENTRY:mainCRTStartup)...
- mount.nfs: Remote I/O error
- 以太坊 p2p Server 原理及实现
- ES6中this的三种用法
- php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
- MATLAB 数据分析方法(第2版)1.3 MATLAB基本语法
- linux下的QQ执行玩法:pidgin-lwqq
- 重温JavaScript