manacher
bestjerry007
这个作者很懒,什么都没留下…
展开
-
浅谈马拉车
处理字符串问题时。我们经常会碰到处理回文串的情况,马拉车算法是处理回文串问题的一个非常好用的算法。它可以在O(n)时间内处理出一个字符串所有的回文中心(可以是字符也可以是字符之间的空)的最长回文串的长度。首先我们考虑暴力的情况。比如abba,它的回文中心有7个,分别是四个字符和他们中间的三个空。确定回文中心后我们大概要这么处理:假设t为回文中心,len[t]表示以t为回文中心的回文串的回...原创 2019-12-05 16:39:31 · 336 阅读 · 0 评论 -
洛谷P4555 [国家集训队]最长双回文串(manacher)
洛谷P4555这个题目要求找出一个字符串的子串,该子串由两个回文串构成,求其最大长度,首先我们先跑一遍manacher,这样我们就求出了i的最大回文半径p[i],对于每个位置i我们需要知道以i为结束的最大回文串的长度(l[i]),以及以i为开始的最大回文串的长度(r[i]),在跑manacher的时候,对于一个位置i的跑p[i],我们需要更新(i-p[i]+1,i+p[i]-1)位置的l[i],...原创 2019-11-08 18:46:15 · 206 阅读 · 0 评论 -
牛客 最长回文
传送门有两个长度均为n的字符串A和B。可以从A中选一个可以为空的子串A[l1…r1],B中选一个可以为空的子串B[l2…r2],满足r1=l2,然后把它们拼起来(A[l1…r1]+B[l2…r2])。求用这样的方法能得到的最长回文串的长度。注意:求的不是本质不同的回文串个数哦!!!对两个串分别跑manacher,然后我们枚举每个中心进行匹配。以枚举A串的中心举例,如果是选择字母做中心,如果字...原创 2019-11-08 17:45:47 · 248 阅读 · 0 评论 -
HDU6599(PAM+马拉车(hash))
hdu6599求符合要求的子串的数目,要求为其本身为回文串,且其一半也是回文串原创 2019-11-01 18:15:04 · 198 阅读 · 0 评论