manacher小结

Posted y2823774827y

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了manacher小结相关的知识,希望对你有一定的参考价值。

P3805 【模板】manacher算法

题目大意

n个字符组成的字符串,求最长回文串

$O$$($$n^3$$)$

枚举两端点,暴力往中间搜

$O$$($$n^2$$)$

枚举回文串终点,暴力往两边搜

$O$$($$n$$)$

$first:$

$j$与$i$关于pos对称,$S$为以$pos$为中间的回文串,$Maxright$为$S$的右端点,$s_1$为以$j$为中间的回文串

$s_2$为以$i$为中间的回文串

下面开始将$manacher$,要降低复杂度,就要减少重复的操作

$(1)$ $s_1$被$S$包含(且没到端点)

显然根据回文的性质$len_{s_1}$=$len_{s_2}$

技术分享图片

$(2)$  $s_1$超过或触及端点

 

这时,我们只能确定,两条蓝线之间的部分(即不超过$Maxright$的部分)是回文的

于是从这个长度开始,尝试以i为中心向左右两边扩展,直到左右两边字符不同,或者到达边界

 

不论以上哪种情况,之后都要尝试更新$Maxright$和$pos$,因为有可能得到更大的$Maxright$

 

 技术分享图片

$(3)$ 当$i$在$Maxright$的右边

遇到这种情况,说明以$i为对称轴的回文串还没有任何一个部分被访问过,于是只能从i的左右两边开始尝试扩展了,当左右两边字符不同,或者到达字符串边界时停止。然后更新$Maxright$和$pos$

技术分享图片

 


以上是关于manacher小结的主要内容,如果未能解决你的问题,请参考以下文章

[BZOJ3676][APIO2014]回文串(Manacher+SAM)

manacher马拉车算法

Manacher

HDU 3068 最长回文(Manacher)

Manacher 入门+模板 回文串专用算法

最长回文子串---Manacher算法