• CoderForce 140C-New Year Snowmen(贪心)


    题目大意:有n个已知半径的雪球。堆一个雪人需要三个尺寸不同的雪球,问用这些雪球最多能堆多少个雪人?

    题目分析:先统计一下每种尺寸的球的个数,从三种最多的种类中各取出一个堆成雪人,这样贪心能保证的到的数目最多。

    代码如下:

    # include<iostream>
    # include<map>
    # include<vector>
    # include<cstdio>
    # include<queue>
    # include<algorithm>
    using namespace std;
    
    struct Node
    {
        int val,cnt;
        Node(int _val,int _cnt):val(_val),cnt(_cnt){}
        bool operator < (const Node &a) const{
            return cnt<a.cnt;
        }
    };
    int ans[40005][3],n;
    map<int,int>mp;
    priority_queue<Node>q;
    
    void solve()
    {
        int cnt=0;
        while(!q.empty()){
            Node a=q.top();
            q.pop();
            if(q.empty()) break;
            Node b=q.top();
            q.pop();
            if(q.empty()) break;
            Node c=q.top();
            q.pop();
            ans[cnt][0]=a.val;
            ans[cnt][1]=b.val;
            ans[cnt][2]=c.val;
            ++cnt;
            if(a.cnt-1>0) q.push(Node(a.val,a.cnt-1));
            if(b.cnt-1>0) q.push(Node(b.val,b.cnt-1));
            if(c.cnt-1>0) q.push(Node(c.val,c.cnt-1));
        }
        printf("%d
    ",cnt);
        for(int i=0;i<cnt;++i){
            sort(ans[i],ans[i]+3);
            printf("%d %d %d
    ",ans[i][2],ans[i][1],ans[i][0]);
        }
    }
    
    int main()
    {
        int a;
        while(~scanf("%d",&n))
        {
            mp.clear();
            for(int i=0;i<n;++i){
                scanf("%d",&a);
                ++mp[a];
            }
            map<int,int>::iterator it;
            while(!q.empty()) q.pop();
            for(it=mp.begin();it!=mp.end();++it){
                q.push(Node(it->first,it->second));
            }
            solve();
        }
        return 0;
    }
    

      

  • 相关阅读:
    python冲刺(5)列表声称式
    python冲刺(4)切片 等
    python冲刺(3)函数 等
    python冲刺(2)
    python冲刺(1)
    redis初步(1)
    php连接Oracle的时候遇到的编码集问题
    redis初步
    php 命名空间
    指向字符数组的指针与指向整型数组的指针
  • 原文地址:https://www.cnblogs.com/20143605--pcx/p/5164727.html
Copyright © 2020-2023  润新知