AC自动机
文章平均质量分 87
alpc_qleonardo
这个作者很懒,什么都没留下…
展开
-
CodeChef FAVNUM FavouriteNumbers(AC自动机+数位dp+二分答案)
好久没有写数位dp了,着实快忘记怎么写了…… 大致题意是,给你一些幸运数字,然后问你在一个区间内的第k大的,含有幸运数字的数是哪一个数字。 其实做法也很简单,这种类型的题目一看就知道是数位dp,然后求第k大,肯定是二分枚举这个数字,然后每次数位dp计算小于等于这个数字的范围内有多少个数字满足条件。关键就在于如何判定这个数字是否包含了幸运数字。而AC自动机正好可以解决这个问题,我们把所有的幸运数字加入到AC自动机中,然后我们同样在AC自动机上面dp。dp[len][pos]原创 2018-02-26 15:20:18 · 295 阅读 · 0 评论 -
AC自动机初学(模板)+ HDU 2222
AC自动机这个东西,听起来很高大上,在高中的时候不知道什么是自动机,以为写出了AC自动机就可以自动AC…… 现在知道了它是用来解决字符串匹配问题的东西,说白了就是KMP+Trie。这个在去年暑假的时候,hc学长也略微提到过,但是没有具体的讲。 在解决只有一个模式串的匹配问题的时候,我们用朴素的KMP算法即可快速完成,但是,如果有很多个匹配串呢?这是就得用...原创 2018-02-14 19:37:38 · 267 阅读 · 0 评论 -
POJ 1625 Censored!(AC自动机+dp+高精度)
大致题意,给你n个字符,和一个长度m,所有的单词都由m个这些字符构成,于是总的单词数目为n^m。然后再给你一些单词(长度不一定是m),所有包含这些单词的单词都不算是合法的单词,现在问你总共有多少个合法的单词。 这种题目用dp的话还是挺明显的,但是普通的dp并不能够判断是否已经构成了合法单词,缺少判断的手段。于是只能借助于AC自动机。我们把所有给出的不合法单词构造AC自动机,当然要注意的是,对于fail指针,我们得做出一些修改。在Trie中,如果一个节点x无法到达字母a,但是它的fail能够到原创 2018-02-18 11:08:39 · 490 阅读 · 0 评论 -
POJ 2778 DNA Sequence(AC自动机+矩阵快速幂+dp)
大致题意,与之前那道题目差不多,也是由指定的一些字母构成的字符串,不能够包换一些不合法的字符,再告诉你一个长度,问你一共有多少个合法的字符串。但不同的是,这道题目的长度可以很长。 上一道题目,我们介绍了用dp的方法去解决,但是这题面对这么长的长度,显然是不可取的。但是我们回顾一下上一道题目dp的过程,dp[i][j]表示到达AC自动机上的j点走了i步时的方案数,最后要求的是 Σdp[n][j],即到达每个合法点走了n步时的方案数总和。而在图论中,邻接矩阵的乘法、次方,恰好可以表示一个人在图中原创 2018-02-20 10:02:42 · 342 阅读 · 0 评论 -
HDU 4057 Rescue the Rabbit(AC自动机+状态压缩dp)
大致题意,还是类似,给你一些字符串,这些字符串有相应的权值,只要包含某个字符串就要加上这个权值。然后同样也是A、T、C和G四个DNA,再告诉你一个长度,问你这个长度的所有字符串中,权值和最大能够到达多少。 一开始的想法还是和之前类似,我们之前有记录单词结尾,我们现在在记录单词结尾的时候把单词的权值也给记上,然后转移的时候,转移最大值。有转移方程dp[i][j]=max(dp[i][j],dp[i-1][x]+val[x]),这个val[x]包含的不止一个单词的结尾的权值,因为单词有相互包含的原创 2018-02-21 12:02:40 · 283 阅读 · 0 评论 -
HDU 3247 Resource Archiver(AC自动机+状态压缩dp+最短路BFS)
大致题意:给你一些合法字符串,和一些不合法串,现在要求你构造一个字符串,使得这个字符串包含所有哦的合法串,且不包含任何不合法串,而且长度最短。 这里了涉及到一个长度最短,可能就和之前的一些题目不同。我们注意到这个数据范围,合法串只有最多10个,所以状态压缩dp很容易想到。这里是求字符最短长度,如果把长度看做代价,很容易发现,此题和状态压缩的鼻祖 HDU 4568 很像。这题是要求你在一个矩阵中取10个以内的东西,每次走一步,问你最少需要走多少步能够取完所有的东西。今天这题则是构造字符串,要求原创 2018-02-25 10:00:29 · 372 阅读 · 0 评论 -
HDU 4787 GRE Words Revenge(在线AC自动机+思维)
大致题意,给你很多个字符串,每个字符串前面会有一个字符,'+'表示添加一个新的字符(模式串),'?'表示一个询问,询问这个串中有多少个模式串。然后所有的串经过加密,强制在线。 很明显的一个AC自动机,当时要求在线,我们考虑如果正常的AC自动机暴力去做,每添加一个单词就重新求一次fail指针,最坏的时候隔一个询问一次,复杂度能退化到O(N^2)显然会超时。 而事实上,AC自动机好像也没有一个很好的方法把它变成在线的数据结构。于是这个时候,我们就要想到一种巧妙的方法。我们设置两个AC原创 2018-03-12 15:49:18 · 429 阅读 · 0 评论 -
HDU 4878 ZCC loves words(AC自动机 + dp + 矩阵快速幂 + 中国剩余定理)
大致题意:给你一些匹配串和一个很长的长度L。让你计算所有长度为L的小写字母构成的字符串的得分总和对5047621取模后的数值。这里,每个字符串s的得分定义为,若s的子串s[i..j]等于第k个匹配串,那么产生p[k]*(len[k]+j)的得分,最后的得分为每一次得分的积。由于涉及到匹配的问题,所以很自然的可以想到用上AC自动机。我们考虑AC自动机上的dp,我们令dp[l]...原创 2019-02-18 22:58:22 · 340 阅读 · 0 评论 -
2019牛客多校赛 第八场 H How Many Schemes(AC自动机 + 矩阵 + 向量 + 树链剖分 + 线段树)
大致题意:给你一棵树,每条边上有一个字符串,然后有一些模式串。现在给你一个询问<u,v>,问你u到v的路径上,每个条边任意选择一个字符,最后按照顺序组成一个字符串,最后的字符串包括至少一个模式串的方案有多少种。看起来很难的样子,写起来其实很复杂,但是理解清楚了其实思路也不太难。首先,既然涉及到匹配问题,而且是多个模式串,很容易想到对模式串建立AC自动机。...原创 2019-08-15 20:57:54 · 338 阅读 · 0 评论