bzoj#P2342. [SHOI2011] 双倍回文

[SHOI2011] 双倍回文

题目描述

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

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

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

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

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

输入格式

输入分为两行。

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

输出格式

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

16
ggabaabaabaaball
12
24
googlegooglegooglegoogle
0

数据范围

对于全部数据,1N5×1051 \leq N \leq 5 \times 10^5