Papyrus在审判你 • 7个月前
#include<bits/stdc++.h>
using namespace std;
int n,dp[2000001],a[2000001][26],to[2000001];
char s[2000001];
long long int ans;
int main(){
cin>>n;
cin>>s+1;
for(int i=1;i<=n;i++){
to[i]=i;
int x=a[to[i-1]][s[i]-'a'];
if(x){
to[i]=to[x-1],dp[i]=dp[x-1]+1;
}
a[to[i]][s[i]-'a']=i;
ans+=dp[i];
}
cout<<ans;
return 0;
}
评论:
请先登录,才能进行评论