zoukankan      html  css  js  c++  java
  • C. Beautiful Regional Contest

    用前缀和写一直wa。。

    思路:让金牌和银牌最少,通多增加铜牌的方式来扩大总奖牌的个数。

    #include<bits/stdc++.h>
    using namespace std;
    map<int ,int >mp;
    const int N=1e6+7;
    int arr[N];
    void solve()
    {
        mp.clear();
        int n;
        cin>>n;
        int x;
        int pos=0;
        for(int i=1;i<=n;i++){
            cin>>x;
            if(!mp[x]) arr[pos++]=x;
            mp[x]++;
        }
        if(pos<3) {
            cout<<"0 0 0"<<endl;
            return ;
        }
        int m=n/2;
        if(m<3) {
            cout<<"0 0 0"<<endl;
            return ;
        }
        int g=mp[arr[0]];
        int b=0,c=0,posb,posc;
        int ansb=0;
        for(int i=1;i<pos;i++){
            ansb+=mp[arr[i]];
            if(ansb>g){
                b=ansb;
                posb=i;
                break;
            }
        }
        if(b==0){
            cout<<"0 0 0"<<endl;
            return ;
        }
        int ansc=0;
        for(int i=posb+1;i<pos;i++){
            ansc+=mp[arr[i]];
            if(ansc>g){
                c=ansc;
                posc=i;
                break;
            }
        }
        if(c==0){
            cout<<"0 0 0"<<endl;
            return ;
        }
        if(g+c+b>n/2){
            cout<<"0 0 0"<<endl;
            return ;
        }
        while(g+b+c<=n/2){
            c+=mp[arr[++posc]];
        }
        c-=mp[arr[posc]];
        cout<<g<<" "<<b<<" "<<c<<endl;
    }
    
    
    int main()
    {
        ios::sync_with_stdio(0);
        int t;
        cin>>t;
        while(t--) solve();
        return 0;
    }
  • 相关阅读:
    settTimeout vs setInterval
    JS继承
    JS创建对象
    原型链
    开始学习python的感受
    Problem 29
    Python 查看关键字
    Problem 21
    Problem 34
    Problem 42
  • 原文地址:https://www.cnblogs.com/Accepting/p/12055961.html
Copyright © 2011-2022 走看看