AC自动机&Trie图
Todobe
two funny foolish men
展开
-
fail树 【Noi2011】 阿狸的打字机 bzoj2434
题目描述:阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机。打字机上只有28个按键,分别印有26个小写英文字母和'B'、'P'两个字母。经阿狸研究发现,这个打字机是这样工作的:l 输入小写字母,打字机的一个凹槽中会加入这个字母(这个字母加在凹槽的最后)。l 按一下印有'B'的按键,打字机凹槽中最后一个字母会消失。l 按一下印有'P'的按键,打字机会在纸上打印出凹槽中现原创 2017-01-20 15:37:31 · 425 阅读 · 0 评论 -
AC自动机 【JSOI2007】bzoj1030 文本生成器
题目大意: 给出N个由大写字母组成的字符串,再给出一个长度M 求有多少个由大写字母组成的长度为M的字符串满足“至少包含这N个字符串中的一个” 答案对10007取模题目分析: 直接求满足至少包含N个字符串中一个的字符串个数不好求,那我们可以求一个都不包含的个数,再用总个数(26^M)减去就可以了。 把所有的串扔到AC自动机中,我们避开单词节点做DP; 设f[i][j]代表到第i个字符,是第原创 2016-12-27 19:43:35 · 449 阅读 · 0 评论 -
AC自动机【poi2000】bzoj2938 病毒
题目大意: 给一些01串,询问有没有无限长的串其中不包括给定的串。题目分析: 如果想要无限长的串,那它应该是一个循环的串。 只需要建一个AC自动机,然后在其中找到一个不包含单词节点的环就能顺着这个环找到一条无限长的01串且不包含给定串。注意事项: 1、走过的节点要标记一下,不能再走一遍(会WA,还会TLE)。代码如下:#include<cstdio>#include<algorithm>原创 2016-12-27 19:27:37 · 437 阅读 · 0 评论 -
AC自动机 模板 【HDU2222】 Keywords Search
AC自动机(Aho Corasick Automaton) 如果匹配字符串,一个模式串,一个匹配串,KMP就搞定了。 但是如果现在有多个模式串怎么办呢?每个模式串都处理一遍,再与匹配串匹配就太慢了,所以有了AC自动机,来解决这类问题。AC自动机可以看成是Trie树和KMP的结合体,具体的实现方式就是在每个节点处增添一个fail指针,作用与KMP中的失配时用的跳转数组差不多(虽然在匹配的大多数时候原创 2016-12-27 18:00:41 · 431 阅读 · 0 评论