#P4287. 双倍回文(Double Palindrome)

0

双倍回文(Double Palindrome)

双倍回文(Double Palindrome)

题目描述

记字符串 ww 的倒置为 wRw^{\mathsf R}。例如(abcd)R=dcba\tt (abcd)^{\mathsf R}=dcba,(abba)R=abba\tt (abba)^{\mathsf R}=abba。

对字符串 xx,如果 xx 满足 xR=xx^{\mathsf R}=x,则称之为回文。例如 abba\tt abba 是一个回文,而 abed\tt abed 不是。

如果 xx 能够写成 wwRwwRww^{\mathsf R} ww^{\mathsf R} 形式,则称它是一个“双倍回文”。换句话说,若要 xx 是双倍回文,它的长度必须是 44 的倍数,而且 xx,xx 的前半部分,xx 的后半部分都要是回文。例如 abbaabba\tt abbaabba 是一个双倍回文,而 abaaba\tt abaaba 不是,因为它的长度不是 44 的倍数。

  • xx 的子串是指在 xx 中连续的一段字符所组成的字符串。例如 be\tt be 是 abed\tt abed 的子串,而 ac\tt ac 不是。
  • xx 的回文子串,就是指满足回文性质的 xx 的子串。
  • xx 的双倍回文子串,就是指满足双倍回文性质的 xx 的子串。

你的任务是,对于给定的字符串,计算它的最长双倍回文子串的长度。

输入格式

输入分为两行。

第一行为一个整数,表示字符串的长度。
第二行有个连续的小写的英文字符,表示字符串的内容。

输出格式

输出文件只有一行即输入数据中字符串的最长双倍回文子串的长度,如果双倍回文子串不存在,则输出 00。

样例输入 #1

16
ggabaabaabaaball

样例输出 #1

12

数据范围

数据范围及约定

对于全部数据,1≤N≤5000001\le N \le 500000。

知识点与难度

本题涉及的知识点从属于 CSP-S,难度(CF Rating):2000。


测试点分布

Subtask 分值 测试点编号 说明
0 10 1 样例
1 20 2~7 小规模 N≤500 / 特殊: 不存在双倍回文输出 0
2 8~13 中等规模 N≤20000 / Hack: 奇数倍回文非4的倍数
3 25 14~19 大规模 N≤200000 多层嵌套双倍回文测试
4 20~25 满规模 N=500000 极限线性 Manacher 压力测试

出处:原题链接