回文自动机PAM小结

本文搬运自本人高中时期CSDN博客,若图片加载不出来,可到原文查看:https://blog.csdn.net/zhangtingxiqwq/article/details/132136120

https://www.luogu.com.cn/problem/P5496

类似AC自动机,维护两个指针,nxt和fail

nxt表示当前回文串开头末尾都接a转移到哪

fail表示当前串最长broder

PAM关键点:一个回文串的broder一定也是回文串,而且所有回文子串(末尾相同)都可以用此方法构造

然后转移和AC自动机类似。

几个理解上的易错点:

  1. fail[1]=0,代码上没写出来,但对于单个字符 a 的fail应该是0, XaX 匹配失败应该是尝试匹配 XX

  2. 应该先算fail在加入点。考虑 abb 在失配过程中发现 XX 形式不行,然后fail到-1号点。如果已经加入就会自己匹配自己了。

  3. 计算长度应该由父亲+2转移过来,但num应该是由fail转移过来

  4. 1号点代表的是初始长度为-1

在这里插入图片描述

dfcc的PAM