码迷,mamicode.com
首页 > 其他好文 > 详细

manacher小结

时间:2018-12-11 11:19:58      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:$$   image   超过   模板   info   复杂度   中心   lock   bubuko   

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小结

标签:$$   image   超过   模板   info   复杂度   中心   lock   bubuko   

原文地址:https://www.cnblogs.com/y2823774827y/p/10100374.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!