AC自动机经典题目

如果对AC自动机的概念,比如Trie图,fail树,last树仍有理解上的困难,请参见:AC自动机

一. 多模式匹配
多模式匹配是ac自动机最经典的问题,包括两个优化:构建last树和树上DP,在上面给出的链接中介绍的很详细了,不再赘述。

习题:
HDU 2896
HDU 3065

二. AC自动机上DP
常用于给定某些模式串,问类似于以下的问题:

  1. 是否存在一个无限长的文本串不包含每个模式串。
  2. 不包含每个模式串的最长文本串是什么
  3. 有多少个长为n的文本串不包含每个模式串

由AC自动机的性质可以得到,一个不包含所有模式串的文本串,在AC自动机也就是Trie图上匹配的时候,永远不会经过有终结标记的点,以及有终结标记的点在Fail树上的子节点。

我们可以在构建AC自动机时将上述的点标记为危险。构建完成后在Trie图的所有非危险节点上进行dp即可。存在无限长就表示有一个从0号点开始的环;无环时求最长文本串就相当于DAG上的最长路;找长为n的文本串个数时也从0号点记忆化搜索即可。

习题:
LuoguP2444 [POI2000]病毒
HihoCoder1877 [2018北京]Approximate Matching
注:HihoCoder1877是2018年icpc北京站的金牌题,如果当时我们做出来就拿金了,?,另外,csfnb!

UVA1399 Puzzle
SCU3030 DNA Sequence 矩阵快速幂

三. AC自动机与数据结构相结合
常用AC自动机的各种性质(尤其是fail和后缀链接性质)来统计各种信息,需要与其它数据结构相结合。

LuoguP2414 [NOI2011]阿狸的打字机
HDU4117 GRE Words

你可能感兴趣的:(精选,学习笔记)