摘要
给出字符串求前 $K$ 长奇长回文子串长之积
是不是很简单啊
题面
解
回文自动机模板
这个东西形式上和AC自动机很像,比较特殊的一点是它不判后继而是判可不可以拓展
Size 求起来也不太舒服,是沿着fail一路加上去的,理解起来就是每个末尾分开考虑
下面乱讲一波回文自动机
先说我们的目标是什么
构建一个类似Trie的东西,使得每个根到节点表示一个回文串的一半
这里就要奇偶分开,奇串要计入中间的字符
考虑尾后加一个字符,我们需要找到把它接到哪个节点的下面
就是找到以这个字符为结尾的最长回文串
容易发现回文串扣掉两端字符后还是回文串
于是我们从长到短尝试以前一个字符为结尾的回文串
类比AC自动机,这就是跳 Fail 的过程
那么只要求一下新节点的Fail就好了,就是再找一次可以拓展的位置
Code
1 |
|