【BZOJ 1355】[Baltic2009]Radio Transmission

来源:互联网 发布:动漫网asp源码 编辑:程序博客网 时间:2024/05/23 11:56

题目来源:BZOJ 1355

思路:

求循环节用到KMP的fail数组的性质。
试想一个长度为n的字符串,fail数组是后缀与前缀相同的最长的长度,那么最短的循环节是不能匹配的,长度为nfail[n]

代码:

#include <cstdio>const int maxn = 1000010;int f[maxn], n, p;char a[maxn];int main(){    scanf("%d%s", &n, a+1);    p = 0;    for(int i = 2; i <= n; i ++){        while(p && a[p+1] != a[i]) p = f[p];        if(a[p+1] == a[i]) p ++;        f[i] = p;    }    printf("%d", n-f[n]);    return 0;} 
0 0
原创粉丝点击