回文串
题目描述
小 D 最近在学习回文串的有关知识。对于字符串 S=S1S2S3⋯Sn−1Sn,记 S 的反串 SR=SnSn−1Sn−2⋯S2S1。我们称字符串 S 是回文串,当且仅当 S=SR。
小 D 发现回文串很少,他决定定义一些新的东西。定义字符串 S=S1S2S3⋯Sn−1Sn 和 T=T1T2T3⋯Tm−1Tm 的和 为 S1S2S3⋯Sn−1SnT1T2T3⋯Tm−1Tm,记作 S∘T。
小 D 发现,字符串之和满足结合律但不满足交换律,即 (A∘B)∘C=A∘(B∘C) 成立,但 A∘B=B∘A 不一定成立。
小 D 定义字符串 S 的一个拆分,为满足 A1∘A2∘A3∘⋯∘AL 的字符串序列 A=[A1,A2,⋯,AL]。定义这样的一个拆分的长度为 L。
小 D 定义一个拆分的反拆分为序列 AR=[AL,AL−1,⋯,A2,A1]。定义一个拆分是回文的,当且仅当 A=AR(两个序列相等定义为同样位置的元素对应相等)。
小 D 现在给出了字符串 S,想要求出 S 的最长(即长度最大)的回文拆分序列有多长。请你帮帮他。
输入格式
本题包含多组数据,输入的第一行为一个整数 T,表示测试数据组数。
接下来 T 行,每行一个字符串,表示这组数据中的 S。保证 S 仅有小写字母组成。
输出格式
对于每组测试数据,输出一行一个整数表示答案。
样例输入 1
4 bonobo deleted racecar racecars
样例输出 1
3 5 7 1
样例解释 1
以下为每组测试数据中的最优方案:
bo / no / bo
;d / e / let / e / d
;r / a / c / e / c / a / r
;racecars
。
样例输入输出 2
见下发文件 ex_palindrome2.in/out
。
数据规模与约定
本题共 10 个测试数据,每个测试数据 10 分。以下为部分分分布(∣S∣ 表示字符串 S 的长度):
对于前 10% 的数据,1≤∣S∣≤5;
对于另 20% 的数据,1≤∣S∣≤30;
对于另 20% 的数据,1≤∣S∣≤200;
对于另 20% 的数据,1≤∣S∣≤2000;
对于另 20% 的数据,1≤∣S∣≤105;
对于 100% 的数据,1≤T≤20,1≤∣S∣≤106,保证 S 仅有小写字母组成。
时间限制:2s
空间限制:512MB