P3546 [POI2012]Prefixuffix
题目大意
求最大的 \(L(\le \frac{n}{2})\) ,使得 \(S\) 长为 \(L\) 的前缀和后缀循环同构
思路
不难发现满足要求的字符串形如 \(ABCBA\) , 其中 \(|A|+|B|=L\)
法一.
注意到问题和 CF932G 有着类似的形式
经典的转化:将 \(S\) 前后字符交替插入构成新字符串中,得到 \(S'=s_1s_ns_2s_{n-1}...\)
那么问题转换为求从 \(1\) 开始的双偶回文串,PAM/manacher 随便做
法二.
注意到 \(A\) 为原串的 border , \(B\) 为剩下串的最长 border
令 \(f_i\) 表示去除首尾 \(i\) 个字符后的最长 border,有
-
\(f_{\frac{n}{2}}=0\)
-
\(f_{i+1} \ge f_{i}-2\)
因为每次删两边的字符只会让 border 两端各减少 1 个字符
暴力递推即可