【笔记】AC自动机
最简单的定义
见 OI-wiki
AC 自动机的 Fail 树
关于字典树上模式匹配的多个串。现在有查询串,要求对每个包含的串进行一定的操作。这个时候,我们就要使用 Fail 树。离线下来,每匹配一个位置,就在那个位置上打上标记。最后统计答案的时候,直接 DFS Fail 树,他的答案就是把其子树当中的所有信息合并起来的答案,通常可以套一些 树形数据结构。
例题 P5840 [COCI 2015] Divljak
对所有的 \(s\) 建立 AC 自动机和 Fail 树。对于每一个操作,直接使用一个颜色来确定。最后对每一个匹配的位置都打上颜色,查询操作就是询问对应的子树里面有多少种颜色使得改颜色编号小于等于某个特定的数。直接使用 \(\text{DSU on tree}\) 即可。
时间复杂度为 \(O((\sum|s|+|t|)\log(\sum|s|+|t|)\log |t|)\)。