标签:
对于样例,我们可以利用"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