#P4287. 双倍回文(Double Palindrome)
0
双倍回文(Double Palindrome)
双倍回文(Double Palindrome)
题目描述
记字符串 的倒置为 。例如,。
对字符串 ,如果 满足 ,则称之为回文。例如 是一个回文,而 不是。
如果 能够写成 形式,则称它是一个“双倍回文”。换句话说,若要 是双倍回文,它的长度必须是 的倍数,而且 , 的前半部分, 的后半部分都要是回文。例如 是一个双倍回文,而 不是,因为它的长度不是 的倍数。
- 的子串是指在 中连续的一段字符所组成的字符串。例如 是 的子串,而 不是。
- 的回文子串,就是指满足回文性质的 的子串。
- 的双倍回文子串,就是指满足双倍回文性质的 的子串。
你的任务是,对于给定的字符串,计算它的最长双倍回文子串的长度。
输入格式
输入分为两行。
第一行为一个整数,表示字符串的长度。
第二行有个连续的小写的英文字符,表示字符串的内容。
输出格式
输出文件只有一行即输入数据中字符串的最长双倍回文子串的长度,如果双倍回文子串不存在,则输出 。
样例输入 #1
16
ggabaabaabaaball
样例输出 #1
12
数据范围
数据范围及约定
对于全部数据,。
知识点与难度
本题涉及的知识点从属于 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 压力测试 |
出处:原题链接