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,有

  1. \(f_{\frac{n}{2}}=0\)

  2. \(f_{i+1} \ge f_{i}-2\)

因为每次删两边的字符只会让 border 两端各减少 1 个字符

暴力递推即可

posted @ 2022-04-14 21:35  chihik  阅读(30)  评论(0编辑  收藏  举报