其实本题比HDU的病毒侵袭1还简单,不过有一个陷阱卡到我了:就是搜索text的时候,当遇到的字母不是大写字母的时候,那么就要重新从根节点开始搜索,否则就会答案错误。
那么一点陷阱,居然没想到啊。
教训啊:看来对不太平常的地方,需要更加深入的思考,才能发现其中的陷阱,否则就WA了。
#include
#include
#include
using std::queue;
con...
分类:
其他好文 时间:
2014-08-07 23:06:35
阅读次数:
364
AC自动机的灵活运用,本题关键是灵活二字。
因为数据不是很大,时间要求也不高的缘故,所以本题有人使用暴力法也过了,有人使用Trie也过了。
当然有人使用AC自动机没AC的,在讨论区里喊AC自动机超时的,那是因为不会灵活运用,或者是硬套模板的,AC了速度也不会快。
给出本人的算法思路:
1 把需要查找的关键字建立Trie, 然后构造AC自动机
2 查找的时候分八个方向查找,比如棋盘...
分类:
其他好文 时间:
2014-08-07 15:41:50
阅读次数:
314
单词统计的题目,给出一些单词,统计有多少单词在一个文本中出现,最经典的入门题了。
AC自动机的基础:
1 Trie, 以这个数据结构为基础的,不过增加一个fail指针和构造fail的函数
2 KMP,不是直接运用KMP,而是需要KMP的思想,KMP思想都没有的话,理解这个算法会更加吃力的。
注意本题的单词会有重复出现的,一个单词只能统计一次。
搜索了一下网上的题解,发现好多代码都...
分类:
其他好文 时间:
2014-08-07 13:20:40
阅读次数:
300
实现状态机有多种模式,其中最灵活而强大的方式是通过迁移表来实现,该方式的缺点之一是需要编写大量小块代码去支持迁移表。而在C#3.0中,可以以一种非常优雅的方式实现。除了有限状态机外,还有有限自动机,有限自动机一般用于分析字符。usingSystem;usingSystem.Collections.G...
分类:
其他好文 时间:
2014-08-06 21:51:32
阅读次数:
281
AC自动机模板题 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 const int N=1002; 9 char str[2000005],s1[N][...
分类:
其他好文 时间:
2014-08-06 17:56:31
阅读次数:
233
AC自动机 简单题 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 const int N=100005; 1...
分类:
其他好文 时间:
2014-08-06 14:08:31
阅读次数:
261
HDU2896 病毒的侵扰http://vjudge.net/problem/viewProblem.action?id=16404题目大意:记录每个病毒的编号,并给出一些网站的源码,分别输出网站及其对应编号中所含病毒的编号,没有就不输出最后输出有病毒网站的个数这道题需要注意的是这个所有ASCII码...
分类:
其他好文 时间:
2014-08-05 18:39:49
阅读次数:
331
HDU 2222 题意:给出N(N#include #include using namespace std;#define N 500005char str[1000005];struct AC{ int ch[N][26],fail[N],val[N],last[N],tmp,root; ...
分类:
其他好文 时间:
2014-08-05 18:39:09
阅读次数:
246
AC自动机中的DP 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 const int N=52*2; 10 c...
分类:
其他好文 时间:
2014-08-05 18:24:19
阅读次数:
189
第一题AC自动机,高仿代码!#include #include #include #include using namespace std;const int maxn = 500010;char str[1000010];struct ACAutomaton{ int ch[maxn][26...
分类:
其他好文 时间:
2014-08-05 00:33:18
阅读次数:
160