
AC自动机
vsooda
这个作者很懒,什么都没留下…
展开
-
HDU 2825 AC自动机模板
首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有模式树(字典树)Trie和KMP模式匹配算法的基础知识。AC自动机算法分为3步:构造一棵Trie树,构造失败指针和模式匹配过程。转载 2013-01-15 09:53:59 · 944 阅读 · 0 评论 -
HDU 2896 病毒侵袭 AC自动机
这题的字母范围为128.要注意的是,匹配之后不能将val[tmp] = 0; 因为下一个例子还要使用。#include #include #include #include #include #include #include #include #include #include #include #include #include #include using原创 2013-01-16 15:39:20 · 524 阅读 · 0 评论 -
HDU 2222 AC自动机经典题目
应用模板,对模板有更深入的理解。1. 当前结点的失败指针 等于 父节点的失败指针指向的结点的的同个字母儿子结点的指针 2. v = chd[ fail[u] ][i];这句为了别的结点计算败者指针提供便利。无其他作用。3. work在结点之间的转移方式 #include #include #include #include #incl原创 2013-01-16 11:12:39 · 615 阅读 · 0 评论 -
HDU 3065 病毒侵袭持续中
目标串中各个模式串出现了几次这就更简单了,都不用把out标记成false了题目中的病毒都是大写字母这个条件应该怎么用?#include #include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2013-01-16 15:59:24 · 580 阅读 · 0 评论 -
PKU 2778 HDU 2243 AC自动机 + 矩阵乘法
矩阵乘法:http://blog.youkuaiyun.com/vsooda/article/details/8510131构造trie图,继而构造出初始矩阵,mat[i][j]表示i走到j有几种走法 ,这个矩阵自乘n次之后就表示i走到j走n步有几种走法问你长度为N的串中不包含了模式串的串有几个n属于1 ~ 2000000000看到这个数据范围我们就应该敏感的想到这是矩阵~最多100个结点,先原创 2013-01-16 18:32:01 · 782 阅读 · 0 评论 -
HDU 3247 AC自动机 + 状态压缩dp
小HH:乳鸽的神题,状态很容易看出来,有50000*1024,很难保持,我用散列表超时了,用bitset刚好可以卡过,不过后来我想,只有尾结点才有效,中间的很多结点完全可以忽略,可以先用最短路吧各个尾结点之间的距离算出来,经过测试,不到50个点,马上就优化到50*1024了,本来9s多过的优化到了100多MS#include #include #include #include #in原创 2013-01-18 13:10:36 · 801 阅读 · 0 评论 -
hdu 4511 AC自动机 + dp
题目大意: 终于放寒假了,小明要和女朋友一起去看电影。这天,女朋友想给小明一个考验,在小明正准备出发的时候,女朋友告诉他,她在电影院等他,小明过来的路线必须满足给定的规则: 1、假设小明在的位置是1号点,女朋友在的位置是n号点,则他们之间有n-2个点可以走,小明每次走的时候只能走到比当前所在点编号大的位置; 2、小明来的时候不能按一定的顺序经过某些地方。比如,如果女朋友告诉小转载 2013-03-26 16:04:57 · 1065 阅读 · 0 评论