题目大意: 给定一个长度为$n(n\leq10^6)$的字符串$S$,定义一个串$S$的最大周期为一个不为$S$的字符串$Q$,满足$Q$为$S$的前缀且$S$为$QQ$的前缀.求字符串$S$的每一个前缀的最大周期长度之和. 思路: KMP+DP. 不难发现串$S$去掉前缀串$Q$后,剩下的串是$Q$的最短非空前缀.首先用KMP算法求出$next$数组.然而$next$求出来是最长,要让它变成最短,需要用DP的思想,向前找到最初的非0$next$对应的长度$f_i$,最后求$\sum(i-f[i…