卧薪尝胆,厚积薄发。
JSOI2016 扭动的回文串
Date: Fri Mar 29 20:50:22 CST 2019
In Category:
NoCategory
Description:
给两个长度均为
$N$
的串
$A$
和
$B$
,定义扭动串
$S(i,j,k)=A[i:j]+B[j:k]$
,求
$A,B,S$
中最长的回文串。
$1\leqslant n\leqslant 10^5$
Solution:
在
$A$
和
$B$
中的都很好求,分别跑一遍
$manacher$
就行了。
如果
$S(i,j,k)$
回文,那么我们一定可以把它拆成
$A[i:l]+A[l+1:j]+B[j:k]$
或者
$A[i:j]+B[j:l]+B[l+1:k]$
,其中两边的是对称的,中间是一个回文串,不难发现中间那部分越长对两边限制越松,于是我们每次找出某个位置的最长回文半径,然后在两边二分对应长度,用
$hash$
判断即可。
Code:
没有代码
In tag:
字符串-manacher
Copyright © 2020
wjh15101051
ღゝ◡╹)ノ♡