内存限制:256 MiB 时间限制:1000 ms
题目描述
JYY 有两个长度均为 N 的字符串 A 和 B。
一个「扭动字符串」S(i,j,k)S(i,j,k)S(i,j,k) 由 A 中的第 i 个字符到第 j 个字符组成的子串与 B 中的第 j个字符到第 k 个字符组成的子串拼接而成。 比如,若 A=’XYZ’,B=’UVW’,则扭动字符串S(1,2,3)=S(1,2,3)=S(1,2,3)=’XYVW’。
JYY 定义一个「扭动的回文串」为如下情况中的一个:
1. A 中的一个回文串;
2.B 中的一个回文串;
3.或者某一个回文的扭动字符串S(i,j,k)S(i,j,k)S(i,j,k)
现在 JYY希望找出最长的扭动回文串。
输入格式
第一行包含一个正整数 N。
第二行包含一个长度为 N 的由大写字母组成的字符串 A。
第三行包含一个长度为 N 的由大写字母组成的字符串B。
输出格式
输出的第一行一个整数,表示最长的扭动回文串。
样例输入
5
ABCDE
BAECB
样例输出
5
样例解释
最佳方案中的扭动回文串如下所示(不在回文串中的字符用 . 表示):
.BC..
..ECB
数据范围与提示
对于所有的数据,1≤N≤1051≤N≤105。
题解
在A,BA,B两串上的回文串不管用manachermanacher还是回文自动机都很好处理,关键在于解决“扭动字符串”的情况。我们考虑讨论回文串上最特殊的点——回文串的中点属于哪一个串。记讨论的回文中心为点