摘要: AC自动机算法详解 首先简要介绍一下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 @ 2012-02-09 22:11 HUJJ 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1058一开始为了改造那表,直接是分别算出tn=in*n,n=2,3,5,7,之后取4个中最小值存储在temp中,如果temp==tn则在相应的i2,i3,i5,i7++,后来发现构造出来的表错了~TvT。在p[index],index==21的时候p[index]==26,原来26=13*2,此时26是4个中最小值,但是13却是除了2,3,5,7之外的质数。囧rz~~正确的构表方法,应该是tn=p[in]*n; n=2,3,5,7.即让2,3,5,7乘以p数组前面相应下标in对应的p[in]值,这样确保 阅读全文
posted @ 2012-02-09 19:18 HUJJ 阅读(184) 评论(0) 推荐(0) 编辑