【JSOI2016】扭动的回文串

内存限制: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

数据范围与提示

对于所有的数据,1N1051≤N≤105

题解

A,BA,B两串上的回文串不管用manachermanacher还是回文自动机都很好处理,关键在于解决“扭动字符串”的情况。我们考虑讨论回文串上最特殊的点——回文串的中点属于哪一个串。记讨论的回文中心为点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值