如题。很玄学的民间都是100,个人也没怎么理解
#include <cstdio>
#include <iostream>
using namespace std;
long long n,l[2000010],f[2000010],ans;
string s;
int main() {
freopen("game.in","r",stdin);
freopen("game.out","w",stdout);
cin>>n>>s;
s=" "+s;
for (int i=1,j=1;i<=n;i++,j=i) {
while (j&&s[j-1]!=s[i]) j=l[j-1];
if (j) l[i]=j-1;
if (l[i]) f[i]=f[l[i]-1]+1;
ans+=f[i];
}
cout<<ans<<endl;
fclose(stdin);
fclose(stdout);
return 0;
}