刷题——Sunscreen POJ - 3614

/*
有c头牛,每头牛只有SPF在某个区间内的防晒霜有效
防晒霜有L瓶,每瓶有防晒指数SPF和cow瓶
问最多能对几头牛涂防晒霜有用


很明显的,对于i号防晒霜起作用的牛,应先涂最大防晒指数小的牛
大的牛有更大的选择


所以排一下序,用一个优先队列存储起效果牛的最大防晒指数,进行选择


队列中最大防晒指数小于防晒指数的牛都能涂这种防晒霜
*/
#include <stdio.h>
#include <algorithm>
#include <queue>
using namespace std;
struct node{int a,b;};
node ci[2505];
node li[2505];
bool cmp(node a,node b){
    return a.a<b.a||(a.a==b.a&&a.b<b.b);
}
int c,l;
int main(){
    while(~scanf("%d %d",&c,&l)){
        for(int i=0;i<c;i++){
            scanf("%d %d",&ci[i].a,&ci[i].b);
        }
        for(int i=0;i<l;i++){
            scanf("%d %d",&li[i].a,&li[i].b);
        }
        sort(ci,ci+c,cmp);
        sort(li,li+l,cmp);
        priority_queue<int,vector<int>,greater<int> >que;
        int sum=0,n=0;
        for(int i=0;i<l;i++){
            while(n<c&&li[i].a>=ci[n].a){
                que.push(ci[n].b);
                n++;
            }
            while(!que.empty()&&li[i].b){
                if(que.top()>=li[i].a){
                    sum++;
                    li[i].b--;
                }
                que.pop();
            }
        }
        printf("%d\n",sum);
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章