poj3614 Sunscreen贪心+优先队列(怕晒的奶牛)

题意:每个奶牛有个防晒系数(spf)范围,有若干个防晒露可以分别将spf降到某个值,但是每个防晒露都有次数限制,输出最多可以保护几个奶牛。


先通过每个奶牛的minspf进行从小到大排序,并将防晒露的spf值从小到大排序,用优先队列对奶牛的maxspf维护,顶层为最小值,对于每个防晒露的spf值,取minspf小于等于这个值的放进优先队列,再从队列中取值直到该防晒露用完,依次循环,最后输出最大值即可。


#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define INF 1000000007
#define inf 100000000000000000
using namespace std;
typedef long long ll;
int c,l,i,j,ans=0;
struct node{
    int mi,ma;
    bool operator<(const node &a)const{
        return ma>a.ma;
    }
}cow[2505],ff;
struct nod{
    int spf,co;
}ss[2505];
bool cmp1(node a,node b)
{
    return a.mique;
int main()
{
    scanf("%d%d",&c,&l);
    for(i=0;i=ss[i].spf)
            {
                ans++;ss[i].co--;
            }
        }
    }
    printf("%d\n",ans);
    return 0;
}


你可能感兴趣的:(poj,贪心,优先队列)