https://www.luogu.org/problemnew/show/P3435
额。。目前80;
先占上AC码;
#include<bits/stdc++.h>
#define ll long long
#define For(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)
using namespace std;
int n,Next[1000005],j;
char s[1000005];
ll ans;
int main(){
scanf("%d%s",&n,s);
For(i,0,n-1) {
j=i;
while(j){
j=Next[j];
if(s[j]==s[i]){Next[i+1]=j+1;break;}
}
}
For(i,1,n) {
while(Next[Next[i]]) Next[i]=Next[Next[i]];
if(Next[i]) ans+=i-Next[i];
}
cout<<ans;
return 0;
}