• POJ3614 贪心+优先队列


    题意:m头牛每头牛有minspf和maxspf,n种spf为spf[i]的防晒霜每种l[i]瓶,尽可能给数量多的牛涂防晒霜,每头牛最多涂一瓶。

    思路:贪心想法,实现是每次取出minspf<=spf[i]的牛加入优先队列中,优先队列以牛的maxspf为优先,给maxspf>=spf[i]且maxspf从小开始取的牛涂(优先队列)。

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<queue>
    using namespace std;
    pair<int,int> cow[2510];
    pair<int,int> bot[2510];
    struct cmp {
        bool operator () (pair<int,int>  a,pair<int,int>  b) {
            return a.second>b.second;
        }
    };
    
    priority_queue<pair<int,int>,vector<pair<int,int> >,cmp> pq;
    int main() {
        int c,l,smin,smax,cnt=0;
        scanf("%d%d",&c,&l);
        for(int i=0;i<c;i++) {
            scanf("%d%d",&cow[i].first,&cow[i].second);
        }
        sort(cow,cow+c);
        for(int i=0;i<l;i++) {
            scanf("%d%d",&bot[i].first,&bot[i].second);
        }
        sort(bot,bot+l);
        pair<int,int> temp;
        int j=0;
        for(int i=0;i<l;i++) {
            while(j<c &&cow[j].first<=bot[i].first) {
                pq.push(cow[j]);
                j++;
            }
            while(bot[i].second>0 && !pq.empty()) {
                temp=pq.top();
                pq.pop();
                if(temp.second>=bot[i].first) {
                    cnt++;
                    bot[i].second--;
                }    
            } 
        }
        printf("%d
    ",cnt);
        return 0;
    }
    View Code
  • 相关阅读:
    生成器和推导式
    闭包
    python
    python初识函数二
    python函数初识
    python文件操作二
    文件操作
    python集合,深浅copy
    Python安装、配置图文详解
    jsDoc 使用及配置!
  • 原文地址:https://www.cnblogs.com/LinesYao/p/5672171.html
Copyright © 2020-2023  润新知