摘要: ORZ主席,这可持久化数据结构真是碉堡了!~PS:这两个题的读入是不同的。。。View Code 1 #include <iostream> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <cstring> 5 #include <algorithm> 6 7 #define N 100010 8 9 using namespace std;10 11 int h[N<<5],ls[N<<5],rs[N<<5],sum[N<<5] 阅读全文
posted @ 2013-02-18 23:10 proverbs 阅读(612) 评论(5) 推荐(0) 编辑
摘要: 首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有模式树(字典树)Trie和KMP模式匹配算法的基础知识。AC自动机算法分为3步:构造一棵Trie树,构造失败指针和模式匹配过程。如果你对KMP算法和了解的话,应该知道KMP算法中的next函数(shift函数或者fail函数)是干什么用的。KMP中我们用两个指针i和j分别表示,A[i-j+ 1..i]与B[1..j]完全相等。也就是说,. 阅读全文
posted @ 2013-02-18 22:02 proverbs 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一些单词,和一段文本,输出文本中出现的单词个数,出现多次算一次。模板题。View Code 1 #include <iostream> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <cstring> 5 #include <algorithm> 6 7 #define N 1000010 8 9 using namespace std; 10 11 struct TR 12 { 13 int son[26],fail,bot; 14 }tr[N]; 15 16 in 阅读全文
posted @ 2013-02-18 21:33 proverbs 阅读(240) 评论(0) 推荐(0) 编辑