随笔分类 - 字符串--ACAM
摘要:CF86C Genetic engineering(AC 自动机 + DP) AC 自动机 + DP,还不怎么会,这里只说一下状态的设计: dp[len][x][k]表示长度len且后缀状态为自动机结点x且后k位还不满足要求的方案数。 具体可以看这篇题解。
阅读全文
摘要:CF163E e-Government(AC 自动机+ BIT + dfn 序 + LCA + 序列上差分) 这么多东西搞在一起其实也没有很难。。 其实我们可以发现,题目就是让我们求每一个串作为某个串的子串出现次数之和。(好像更难理解了。) 看一下样例就知道了.. input: 1 3 a aa a
阅读全文
摘要:P2336 [SCOI2012]喵星球上的点名(AC 自动机 + BIT + dfn 序 + LCA ) 这道题除了 AC 自动机中 Fail 树本身的性质,与其他题目最大不同是它 AC 自动机的建立。 这道题的字符集特别大,所以我们不能和以前一样直接存下来,于是可以想到用 Map 维护每个点可以到
阅读全文
摘要:P5840 [COCI2015]Divljak(AC自动机+LCA+BIT) 我们发现对 \(T\) 集合建 AC 自动机非常的不好做(又要动态),所以我们考虑对 \(S\) 建 AC 自动机,然后每个 \(T\) 加入的时候都相当于修改一些节点的权值。 这里我们可以差分一下,把求点转化成求子树和,
阅读全文
摘要:CF1437G Death DBMS(AC自动机+树剖) 修改就是直接在建出来的 Fail 树上的对应 \(endpos\) 处修改(对应后文的单点修)。 重点是询问,考虑这个询问对应到 AC 自动机上面是什么:当前串的子串 >当前串每一个前缀的 Fail 树上的祖先。 也就是说就是询问一个点到根的
阅读全文
摘要:CF710F String Set Queries(AC自动机+二进制分组) 非常牛逼的一道题。根据题意,就是动态的 AC 自动机(动态加字符串,删除字符串,查询所有串在模板串出现次数) 然后询问就是可以预处理每个点作为 \(endpos\) 的次数,对于一个串查其所有前缀的对应到根的边权总和。(直
阅读全文
摘要:CF1202E You Are Given Some Strings... 题意: 直接拼不行,于是我们直接枚举原串的断点(注意这个技巧)。 然后发现对于每个拼接其实就是 AC 自动机,首先,我们由 Fail 树的性质—————不断跳到当前前缀的后缀的位置,可以得出当前点的后缀串匹配的个数就是 \(
阅读全文
摘要:P2414 [NOI2011] 阿狸的打字机 首先根据题意模拟可以建出 AC 自动机。 然后我们发现,对于每一个询问 \((x,y)\) ,对于 AC 自动机来说,其实就是在询问在 Fail 树上以 \(x\) 为根的子树内,有多少个 \(y\) 的前缀的标记。 解释一下为什么:因为一个结点 \(x
阅读全文
摘要:UVA11019 Matrix Matcher 题意: 给定两个字符矩阵 \(A\) 和 \(B\) ,求 \(A\) 中有多少个子矩阵和 \(B\) 完全相同。 解答: 最开始毫无思路,但是我们可以根据 “二维字符矩阵匹配” 转化成 “一维字符串匹配”。 于是我们可以想到先将 \(A\) 和 \(
阅读全文
摘要:【模板】AC自动机(加强版) 这道题就是把原本 \(endpos\) 的位置打上的标记换成了串的编号而已,注意处理一下映射即可。
阅读全文
摘要:【模板】AC自动机(二次加强版) 【模板】AC自动机(二次加强版) 对于 \(S\) 的每一个前缀,先在对应位置打上标记(因为 AC 自动机 Fail 的性质),然后我们对 Fail 树来一遍拓扑排序,类似树上差分的思路,不停地累计即可(为什么能累计:因为 AC 自动机 Fail 的性质)。 扩展
阅读全文
摘要:【模板】AC自动机(二次加强版) 【模板】AC自动机(二次加强版) 对于 \(S\) 的每一个前缀,先在对应位置打上标记(因为 AC 自动机 Fail 的性质),然后我们对 Fail 树来一遍拓扑排序,类似树上差分的思路,不停地累计即可(为什么能累计:因为 AC 自动机 Fail 的性质)。 扩展
阅读全文
摘要:P3121 [USACO15FEB]Censoring G AC 自动机 多模式串匹配问题。 首先我们对所有模式串建立一个 ACAM 。 然后我们把文本串放上去匹配,当我们匹配到一个带标记的点的时候,说明我们目前出现了一个串,那么检查当前是否可以匹配完全,可以的话我们会直接相当于现在说明都没有匹配,
阅读全文