A. Who Can Win

哎出大锅了

贪心,先求出封榜前通过题数最多且罚时最少的队伍,假定某个队伍封榜后所有的题目都是第一发交了就过

先按时间排个序
需要注意:
1.去重
2.计算罚时:显示accepted还要计算之前没过导致题目罚时,而如果这个题目没通过的话就不计算罚时
3.对于封榜后的提交也要正确计算罚时,即之前rejected的罚时也要加上去
4.对于队伍名称要按字典序排序

struct node{
    string na;
    char tm;
    int tim;
    string zt;
};
bool cmp(const node&a,const node&b){
    return a.tim<b.tim;
}
void solve(){
    int n;cin>>n;
    vector<node>a(n+1);
    rep(i,1,n){
        cin>>a[i].na>>a[i].tm>>a[i].tim>>a[i].zt;
    }
    sort(a.begin()+1,a.end(),cmp);

    map<string,set<char>>ac;
    map<string,int>fs;
    map<string,map<char,int>>mp;
    map<string,set<char>>mtg;
    map<string,int>mfs;

    rep(i,1,n){
        string name =a[i].na;
        char tm =a[i].tm;
        int time =a[i].tim;
        string res =a[i].zt;
        if(ac[name].count(tm))continue;

        if(res=="Accepted"){
            fs[name] += time;
            ac[name].insert(tm);
        }else if(res=="Rejected"){
            mp[name][tm]++;
        }else{
            if(mtg[name].count(tm))continue;
            mtg[name].insert(tm);
            mfs[name]+=time;
            mfs[name]+= mp[name][tm]*20;
        }
    }
    for(auto[x,y]:ac){
        for(auto ele:y){
            if(mp[x].count(ele)){
                fs[x]+=mp[x][ele]*20;
            }
        }
    }

    int fashi=1e18;
    int tg=0;

    for(auto[x,y]:ac){
        int cnt=y.size();
        if(tg==cnt){
            fashi=min(fashi,fs[x]);
        }else if(cnt>tg){
            tg=cnt;
            fashi=fs[x];
        }
    }
    vector<string>ans;
    for(auto[x,y]:ac){
        if(tg==y.size()&&fashi==fs[x]){
            ans.pb(x);
            continue;
        }
        int add = mtg[x].size();
        if(add+y.size()>tg){
            ans.pb(x);
        }else if(add+y.size()==tg){
            int tot =fs[x]+mfs[x];
            if(tot<=fashi){
                ans.pb(x);
            }
        }
    }
    sort(ans.begin(),ans.end());
    for(auto s:ans){
        cout<<s<<' ';
    }
    cout<<endl;
}
posted @ 2025-09-07 22:33  Marinaco  阅读(16)  评论(0)    收藏  举报
//雪花飘落效果