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

manacher 和 扩展KMP

时间:2019-07-04 12:56:49      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:位置   出现   字符   log   过程   转换   回文   不同   中心   

manacher 和 扩展KMP

事实上,这两个东西是一样的。


考虑 manacher 的过程

我们实时维护最远扩展的位置 \(mx\) 以及这个回文串的回文中心 \(l\) ,那么显然当然位置如果没有超过 \(mx\)

,是可以利用与 \(l\) 的对称位置 \(2l-i\) 的信息的,然后判断一下是否可以延伸 \(mx\) 的位置

  • 也可以出一些有意思的东西

    给你一个长为 \(n\) 的串的 \(2n+1\) 的回文数组 \(pa\) ,求哪些字符是相等的。

    拿并查集维护的话,有一种类似于萌萌哒那个题倍增做法,但是多一个 \(\log\)

    但是如果考虑 manacher 的过程,其实本质不同的相等位置只会在 \(mx\) 扩展的时候出现,就可以优化掉这个 \(\log\)


考虑 扩展KMP

给你 \(s,t\) ,要求你求出 \(t\)\(s[i,n]\) 的所有 \(lcp\)

其实可以转换到求 \(s[i,n]\)\(s[1,n]\)\(lcp\)

同样维护 \(lcp\) 最远扩展的位置 \(mx\) 以及这个 \(lcp\) 的起始位置 \(l\) ,那么当前如果没有超过\(mx\) ,位置 \(i\) 可以利用 \(i-(l-1)\)\(s\)\(lcp\) ,并判断是否可以扩展

可以发现和上面是一个东西的,写起来也差不多

manacher 和 扩展KMP

标签:位置   出现   字符   log   过程   转换   回文   不同   中心   

原文地址:https://www.cnblogs.com/butterflydew/p/11131720.html

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