#YDRG011H. 明天明天
明天明天
以下是本题所用记号的约定。(对字符串比较熟悉的选手可以略过这一部分)
字符串下标均从 开始且仅包含小写字母(ASCII 97 ~ 122)。
表示字符串 的长度。 表示字符串 的第 个字符。
对于字符串 , 是它们的拼接。例如 和 的拼接即为 。
对于字符串 , 表示最大的 使得对于每个 都有 。
题目描述
对于字符串 ,定义 是将 中的每个字符向后循环移位一位( 变成 、 变成 、……、 变成 、 变成 ) 次得到的字符串,例如 $\operatorname{shuffle}_1(\texttt{aaacfz})=\texttt{bbbdga},\,\operatorname{shuffle}_2(\texttt{aaacfz})=\texttt{cccehb}$。
对于字符串 和非负整数 ,按如下方法生成字符串序列 :
$$T_i=\begin{cases}S&i=0\\T_{i-1}\operatorname{shuffle}_{ik}(S)&i>0\end{cases} $$进而定义 关于 的的自描述字符串 。
现在给定 个字符串 ,构造一个长度为 的非负整数序列 ,最大化:
$$V=\sum_{i=1}^n\sum_{j=1}^{i-1}\operatorname{lcp}(f_{a_j}(S_i),f_{a_i}(S_j)) $$的值。你只需要输出最大的 即可。如果最大的 输出 TAT
。
由于某些原因,保证对于每个字符串长度 都存在自然数 使得 或 。
输入格式
第一行一个正整数 。
后 行,第 行描述字符串 。
输出格式
一行一个非负整数或 TAT
,表示最大的 值。若 输出 TAT
。
样例 #1
样例输入 #1
2
ab
abcd
样例输出 #1
TAT
样例解释 #1
取 ,。此时 $f_0(S_1)=\texttt{abcdefgh}\cdots,\,f_2(S_2)=\texttt{abcdefgh}\cdots$。
通过计算可以得到 $\operatorname{lcp}(f_0(S_1),f_2(S_2))=2\times10^{36}+2>10^{18}$,故输出 TAT
。
样例 #2
样例输入 #2
5
abc
abca
qwq
qwqw
qwpw
样例输出 #2
15
样例解释 #2
序列的一种可能的取值:,此时每对 所对应 的取值如下:
| |||||
| |||||
| |
此时 。可以证明不存在 的方案。
数据范围
本题采用捆绑测试。
数据范围:
- Subtask 1 (5pts):保证存在 使得 。
- Subtask 2 (5pts):,。
- Subtask 3 (30pts):保证不存在 使得 不是 的前缀、且 不是 的前缀。
- Subtask 4 (60pts):无特殊限制。
对于全部数据,,字符串仅包含小写字母。