manacher

算法相关

思想

维护最靠右的回文子串,根据对称性求解答案。

记号

  • \(p_i\) 表示以 \(i\) 为回文中心的最长回文子串半径。
  • \(l_i\) 表示以 \(i\) 为左端点的最长回文子串长度。
  • \(r_i\) 表示以 \(i\) 为右端点的最长回文子串长度。

习题

神秘题

模板。

CSES 1111

模板。

CSES 3138

思路

维护 \(r_i\) 表示以 \(i\) 为右端点的最长回文子串长度,只需要在 manacher 的时候更新 \(i + p_i - 1\) 即可。

同理,如果需要维护 \(l_i\) 则只需要更新 \(i - p_i + 1\)。

P4555 [国家集训队] 最长双回文串

思路

维护 \(l_i, r_i\),那么只需要枚举一个占位符去拼接 \(r_{i - 1}, l_{i + 1}\) 即可。

P1659 [国家集训队] 拉拉队排练

思路

将 manacher 时记录的最长回文子串长度用桶存下来,那么计数相当于是对桶做一个后缀和。

P3501 [POI 2010] ANT-Antisymmetry

思路

在 manacher 线性扩展时用原串匹配取反串即可,属于一个魔改 manacher。

P9606 [CERC2019] ABB

简要题意

求使给定小写字母字符串成为回文串需在字符串末尾加入字母的最少数量。

思路

找出一个极长前缀回文串即可。

posted @ 2026-09-29 11:33  endswitch  阅读(4)  评论(0)    收藏  举报