刷題——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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章