![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
AC自动机
文章平均质量分 58
ZigZagK
一个蒟蒻。
展开
-
AC自动机
作用AC自动机全称Aho-Corasick自动机,这个算法是在KMP和trie的基础上得到的更优秀的字符串匹配算法(所以强烈建议先参考KMP和Trie)。实现KMP是线性的匹配,AC自动机呢?不难想到在trie里匹配! 比如有she,her,hers,his,him这几个单词,我们需要在一个本文中查找这些单词。使用KMP需要每个单词先处理失配函数,然后还要遍历这个文本n次(n表示单词数量),原创 2017-03-13 21:15:02 · 615 阅读 · 0 评论 -
【AC自动机-fail树+离线+DFS序+树状数组】BZOJ2434(Noi2011)[阿狸的打字机]题解
题目概述有一台打字机,可以:在字符串末尾插入一个小写字母。删除字符串末尾的一个小写字母。输出当前字符串。还有 mm 个询问,每个询问 x,yx,y 表示求第 xx 个输出的字符串在第 yy 个输出的字符串中的出现次数。解题报告观察打字的过程,我们发现这其实就是在构造一棵Trie:在字符串末尾插入一个小写字母 →\to 在当前节点 nownow 扩展一个字符。删除字符串末尾的一个小写字母原创 2017-08-08 11:54:46 · 557 阅读 · 0 评论 -
【AC自动机-fail树+树链合并】BZOJ3881(Coci2015)[Divljak]题解
题目概述有 nn 个字符串,第 ii 个字符串是 sis_i 。还有另一个字符串集合 TT 和 mm 个操作,操作格式如下:1.向字符串集合 TT 中加入一个字符串 SS 。2.询问 TT 中有几个字符串出现了 sxs_x 。解题报告首先我们会想到把 nn 个字符串建成AC自动机,并构造出 failfail 树。这样的话,每次新加入一个字符串 SS ,记录 SS 在AC自动机上出现的位置。对于位置原创 2017-08-08 23:11:41 · 880 阅读 · 0 评论 -
【AC自动机+DP】BZOJ1030(JSOI2007)[文本生成器]题解
题目概述如果一篇文章中至少包含给出 nn 个单词中的一个单词,那么我们说这篇文章是可读的。求长度为 mm 字符集只有 [A,Z][A,Z] 的文本中可读文本的数量。解题报告AC自动机+DP套路题……由于直接求可读文本比较困难,正难则反,我们求不可读文本的数目 ansans ,那么 26m−ans26^m-ans 就是答案。先将 nn 个模板串建成AC自动机,然后 f[i][j]f[i][j] 表示文原创 2017-10-22 18:56:54 · 339 阅读 · 0 评论 -
【二进制分组+AC自动机】HDU4787[GRE Words Revenge]题解
题目概述给出 nn 个操作,操作有两种:1.加入一个 0101 串。2.询问一个 0101 串中子串是学过单词的个数。强制在线。解题报告如果是插入完再询问,就是AC自动机裸题。如果不强制在线,可以按照时间分治。然而都不满足啊,只能另想办法了。又一个神奇的暴力,二进制分组就派上用场了。每次插入都必须重建AC自动机,但是这是无法承受的。我们将插入分组,如果这一组与上一组的个数相同,那么就将两者合并,并重原创 2017-12-23 16:22:13 · 458 阅读 · 0 评论