题目 : http://poj.org/problem?id=1961
题目大意 : 输出每个位置的最大幂,其实和poj2406是一样的。
考察点 : KMP
思路 :由于s = s1 ^ n; 因此len[ len[s] - next[len[s]] ] = len[s1];
由于next中记录的是最大的真前缀。故,next中包含字串s1的最大重叠数,也就是说,因为next[i]记录的是到i的最大真前缀, 因此, len[i] – next[i]就是最小的独立体, 独立题越小,幂就会越大的。
提交情况 : wrong answer 9次 原因 test 写成了 text
用了next数组, 个人觉得和pre数组没有区别。Next[i] 表示的是前I – 1个中最大的真前缀,pre[i] 是前i个的最大真前缀, 所以认为没区别,,,,,,,,,,
AC code
#include <stdio.h>
#include <string.h>
#define MAXN 1210001
charP[MAXN];
intnext[MAXN];
voidGet_next(char P[], int m){
}
int main(){
}