回文树 回文自动机 PAM
是什么
- 顾名思义,回文自动机是一种自动机,其中的每个状态表示的是一个回文串,可以用来解决与回文串有关的许多问题。
- 和其他自动机一样,它也有转移边(树边)和失配指针(fail)。其中转移边表示的是在原回文串的两边各加一个字符,得到长度加 2 2 2的新回文串;fail指针则指向该回文串的最长回文后缀。
- 和其他自动机有所不同,它有两个根节点, 分别代表长度为偶数的串和长度为奇数的串。它们的长度分别为 0 0 0和 − 1 -1 −1(注意不是 1 1 1,为了添加 2 2 2的长度可以得到长为 1 1 1的回文串),以下分别称为奇根和偶根。
- 值得注意的是,偶根的fail指针指向的是奇根,而奇根的fail并不需在意,它的儿子中总会有长为 1 1 1的回文串,因而不可能会失配。
- 它大概是这样:
如何构造
- 首先初始化两个根节点。
a[0].len = 0, a[1]</