比赛 2026.8.28 评测结果 WAAAWWEEEE
题目名称 终将成为你 最终得分 30
用户昵称 郑霁桓 运行时间 0.958 s
代码语言 C++ 内存使用 8.61 MiB
提交时间 2026-08-28 12:52:57
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,f[5005],ds[5005][5005],lt[30],nt[5005],vs[5005];
priority_queue<pair<long long,int> >q;
vector<int>v,vv[5005];
string s;
int main(){
    freopen("become.in","r",stdin);
    freopen("become.out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>s,s=' '+s,v.push_back(0);
    for(int i=1;i<=n;i++) if(s[i]=='e') v.push_back(i);
    for(int i=n;i>=1;i--){
        for(int j=0;j<=9;j++){
            if(j==4) continue;
            if(lt[j]) vv[i].push_back(lt[j]);
        }
        lt[s[i]-'a']=i;
    }
    for(int i=0;i<v.size();i++){
        int s=v[i]+1;
        while(!q.empty()) q.pop();
        for(int j=s;j<=n;j++) ds[i][j]=1e18,vs[j]=0;
        ds[i][s]=vs[s]=0;
        q.push({0,s});
        while(!q.empty()){
            int tp=q.top().second;
            q.pop();
            if(vs[tp]) continue;
            vs[tp]=1;
            if(tp-1>s&&ds[i][tp-1]>ds[i][tp]+1){
                ds[i][tp-1]=ds[i][tp]+1;
                q.push({-ds[i][tp-1],tp-1});
            }
            for(int j=0;j<vv[tp].size();j++){
                if(ds[i][vv[tp][j]]>ds[i][tp]+2){
                    ds[i][vv[tp][j]]=ds[i][tp]+2;
                    q.push({-ds[i][vv[tp][j]],vv[tp][j]});
                }
            }
        }
    }
    for(int i=1;i<v.size();i++){
        f[i]=f[i-1]+ds[i-1][v[i]]+1;
        for(int j=1;j<i;j++){
            f[i]=min(f[i],f[j-1]+ds[j-1][v[i]]+v[i]-v[j]+i-j+1);
        }
    }
    cout<<f[v.size()-1];
    return 0;
}