怎么没人会啊

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;
}

评论:

请先登录,才能进行评论