题解 P4391 【[BOI2009]Radio Transmission 无线传输】
luogu
题目就是用KMP板子前半部分求next[n],结果为n-next[n]。
至于为什么,画个图分析,结合题目复制串的事实,推一下即可?
附一个KMP板子
#include<bits/stdc++.h>
using namespace std;
int n,next[1000010];
char c[1000010];
int main()
{
scanf("%d%s",&n,c+1);
for(int i=2;i<=n;i++)
{
int j=next[i-1];
while(j>0&&c[i]!=c[j+1])
{
j=next[j];
}
if(c[i]==c[j+1])
{
next[i]=j+1;
}
else
{
next[i]=0;
}
}
cout<<n-next[n];
}