Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
33157 | 23级徐泽厚 | 【J】T4 | C++ | 通过 | 100 | 345 MS | 54936 KB | 852 | 2024-10-04 16:06:23 |
#include <bits/stdc++.h> using namespace std; int sum[5000010][27]; string s; int n; int ans=0; int main(){ getline(cin,s); n=s.size(); s=' '+s; for (int i=1;i<=n;i++){ for (int j=1;j<=26;j++){ sum[i][j]=sum[i-1][j]; } sum[i][s[i]-'a'+1]=i; } for (int i=1;i<=n;i++){ vector<pair<int,int>> ve; for (int j=1;j<=26;j++){ int r=sum[i][j]; int l=sum[r-1][j]; l++; if (l<=r){ ve.push_back({l,r}); } } sort(ve.begin(),ve.end()); int r=0; for (auto i:ve){ int x=i.first,y=i.second; if (x>r) ans+=y-x+1; else if (y>r) ans+=y-r; r=max(r,y); } } cout<<ans<<endl; return 0; }