卧薪尝胆,厚积薄发。
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:


没有代码
Copyright © 2020 wjh15101051
ღゝ◡╹)ノ♡