https://www.luogu.com.cn/problem/P5496
类似AC自动机,维护两个指针,nxt和fail
nxt表示当前回文串开头末尾都接a转移到哪
fail表示当前串最长broder
PAM关键点:一个回文串的broder一定也是回文串,而且所有回文子串(末尾相同)都可以用此方法构造
然后转移和AC自动机类似。
几个理解上的易错点:
- fail[1]=0,代码上没写出来,但对于单个字符
a
的fail应该是0,XaX
匹配失败应该是尝试匹配XX
- 应该先算fail在加入点。考虑
ab
,b
在失配过程中发现XX
形式不行,然后fail到-1号点。如果已经加入就会自己匹配自己了。 - 计算长度应该由父亲+2转移过来,但num应该是由fail转移过来
- 1号点代表的是初始长度为-1
dfcc的PAM