病毒侵袭 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7381    Accepted Submission(s): 1935 Problem Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻....在这样的时刻,人们却异常兴奋——我们能在有生之年看到500年一遇的世界奇观,那是多么幸福的事儿…
/* hdu 2896 病毒侵袭 ac自动机 从题意得知,模式串中没有重复的串出现,所以结构体中可以将last[](后缀链接)数组去掉 last[]数组主要是记录具有相同后缀模式串的末尾节点编号 .本题中主要是计算每一个模式串 在主串中有没有出现过,而不是计算出现过多少次,所以将last[]数组省掉.... */ #include<algorithm> #include<iostream> #include<cstdio> #include<cstring>…
病毒侵袭 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 19465    Accepted Submission(s): 4814 Problem Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻....在这样的时刻,人们却异常兴奋——我们能在有生之年看到500年一遇的世界奇观,那是多么幸福的事儿…
病毒侵袭 模板题,不多说了.. 题意:n个不同的字符串分别代表病毒特征,给出m次查询,每次一个字符串(网址),求这个字符串中有几个病毒特征,分别从大到小输出编号,最后输出所有的带病毒网址个数.格式请看样例. 思路:典型AC自动机模板题,建一个Trie树,叶节点赋病毒的编号,然后依次匹配,用set存入编号即可,如果不带病毒不用输出来.这题很容易MLE,动态建树释放内存,所以采用静态建树,可以参考POJ Phone List.注意用C++提交. const int N=129;//可见字符很多,注意…
pid=2896">http://acm.hdu.edu.cn/showproblem.php?pid=2896 病毒侵袭 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 11796    Accepted Submission(s): 3067 Problem Description 当太阳的光辉逐渐被月亮遮蔽.世界失去了光明,…
题意:略 思路:套用ac自动机模板 #include <iostream> #include<cstdio> #include<cstring> using namespace std; char str[11000]; int total,head,tail; struct node{ node *next[130]; node *fail; int cnt,id; node(){ fail=NULL; cnt=0; memset(next,NULL,sizeof(n…
/** 题目:hdu2896 病毒侵袭 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2896 题意:N(N <= 500)个长度不大于200的模式串(保证所有的模式串都不相同), M(M <= 1000)个长度不大于10000的待匹配串,问待匹配串中有哪几个模式串, 题目保证每个待匹配串中最多有三个模式串. 思路:ac自动机做法,字符为可见字符,那么直接就是他们的ascii值作为每一个字符的标志.最多128: 由于不超过三个,所以找到3个就可以re…
学习AC自动机请戳这里:大神blog........ 自动机的模板: #include <iostream> #include <algorithm> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <string> #include <vector> #include <set> #…
<题目链接> 题目大意: 给你一些单词,和一个字符串,问你这个字符串中含有多少个上面的单词. 解题分析: 这是多模匹配问题,如果用KMP的话,对每一个单词,都跑一遍KMP,那么当单词数量非常多的时候,耗时会非常多,所以这里用到了AC自动机,这是一种类似于Trie树的数据结构,但是同时,它也用到了KMP算法中 next数组的思想. 本题可做模板: #include <bits/stdc++.h> using namespace std; ; ],cnt[N],fail[N],pos;…
本题是在text里面查找key word的增强版.由于这里有多个text. 那么就不能够简单把Trie的叶子标志记录改动成-1进行加速了,能够使用其它技术.我直接使用个vis数组记录已经訪问过的节点,达到加速效果,速度还算挺快的. 只是看discuss里面有人直接使用Trie,做出了140ms的速度,并且他的程序严格来说并不对.可见本题的数据非常水啊.Trie的时间效率肯定比AC自己主动机低,可是在数据非常水的特殊情况下.Trie的速度也能够非常快的. 注意两个细节: 1 病毒也须要安装顺序输出…