标签:$$ image 超过 模板 info 复杂度 中心 lock bubuko
题目大意
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
$
标签:$$ image 超过 模板 info 复杂度 中心 lock bubuko
原文地址:https://www.cnblogs.com/y2823774827y/p/10100374.html