标签:
对于样例,我们可以利用"abc"不断自我连接得到"abcabcabc",读入的cabcabca,是它的子串
KMP,答案等于n-fail[n]。
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define F(i,j,n) for(int i=j;i<=n;i++)
#define D(i,j,n) for(int i=j;i>=n;i--)
#define ll long long
#define maxn 1000005
using namespace std;
int n,f[maxn];
char s[maxn];
int main()
{
scanf("%d%s",&n,s+1);
int j=0;
F(i,2,n)
{
while (s[j+1]!=s[i]&&j) j=f[j];
if (s[j+1]==s[i]) j++;
f[i]=j;
}
printf("%d\n",n-f[n]);
return 0;
}
bzoj1355【Baltic2009】Radio Transmission
标签:
原文地址:http://blog.csdn.net/aarongzk/article/details/51485912