题解:
和NOI2014动物园一模一样
唯一的坑点在于这个题O(n^2)就可以过!!!!!!!!
代码:
//BZOJ 3620
#include<cstdio>
#include<cstring>
#include<iostream>
#define MAXN 15010
using namespace std;
char s[MAXN];int k;
#ifdef begin
#undef begin
#defien begin bbbbbbbbegin
#endif
int nxt[MAXN],nxt2[MAXN];
int kmp(char *s,int n)
{
int resc=0;nxt[1]=nxt2[1]=0;
for(int i=2;i<=n;i++)
{
int j=nxt[i-1];
while(j&&s[j+1]!=s[i]) j=nxt[j];
if(s[j+1]==s[i]) j++;
nxt2[i]=nxt[i]=j;
while(nxt2[i]*2>=i) nxt2[i]=nxt[nxt2[i]];
if(nxt2[i]>=k) resc++;
}
return resc;
}
int main()
{
scanf("%s",s+1);s[0]='#';
scanf("%d",&k);int ans=0,len=strlen(s+1);
for(int begin=1;begin<=len;begin++)
ans+=kmp(s+begin-1,strlen(s+begin));
printf("%d\n",ans);return 0;
}
#undef begin