第十一届蓝桥杯大赛软件类省赛第二场 CC++ 大学 B 组 H题 子串分值和

it2026-08-04  8

#include<bits/stdc++.h> using namespace std; #define pb push_back #define fast ios_base::sync_with_stdio(0), cin.tie(0),cout.tie(0) string s; int a[30][100010]; int now[30],vis[30]; int main() { int ans=0,ss=0; cin>>s;int n=s.size(); s="0"+s; for(int i=n;i>=1;i--) { int v=s[i]-'a'; for(int j=0;j<26;j++) { a[j][i]=now[j]; } now[v]=i; } for(int i=1;i<=n;i++) { int v=s[i]-'a'; if(!vis[v]){vis[v]=1;ss++;}ans+=ss; } ss=ans; for(int i=1;i<=n;i++) { int v=s[i]-'a'; ss-=(n-i+1); if(a[v][i]!=0)ss+=(n-a[v][i]+1); ans+=ss; } cout<<ans<<endl; return 0; }
最新回复(0)