提交时间:2024-10-04 21:12:59

运行 ID: 33303

#include<bits/stdc++.h> using namespace std; #define int long long const int N=5e6+10; char s[N]; struct node{ int l,r; }qujian[30],qujian2[30]; int n,ind; int cur,ans,you; bool cmp(node x,node y){ if(x.l!=y.l) return x.l<y.l; return x.r<y.r; } signed main(){ scanf("%s",s+1); n=strlen(s+1); for(int i=1;i<=n;i++){ ind=s[i]-'a'; cur=qujian[ind].r; qujian[ind]=(node){cur,i}; for(int j=0;j<26;j++) qujian2[j]=qujian[j]; sort(qujian2,qujian2+26,cmp); you=0; for(int j=0;j<26;j++){ int x=qujian2[j].l,y=qujian2[j].r; if(x>you){ ans+=(y-x); }else if(y>you){ ans+=(y-you); } you=max(you,y); } } printf("%lld",ans); return 0; }