zoukankan      html  css  js  c++  java
  • Sunscreen(POJ 3614 优先队列)

    Sunscreen
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 5898   Accepted: 2068

    Description

    To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2500) cows must cover her hide with sunscreen when they're at the beach. Cow i has a minimum and maximum SPF rating (1 ≤ minSPFi ≤ 1,000; minSPFi ≤ maxSPFi ≤ 1,000) that will work. If the SPF rating is too low, the cow suffers sunburn; if the SPF rating is too high, the cow doesn't tan at all........

    The cows have a picnic basket with L (1 ≤ L ≤ 2500) bottles of sunscreen lotion, each bottle i with an SPF rating SPFi (1 ≤ SPFi ≤ 1,000). Lotion bottle i can cover coveri cows with lotion. A cow may lotion from only one bottle.

    What is the maximum number of cows that can protect themselves while tanning given the available lotions?

    Input

    * Line 1: Two space-separated integers: C and L
    * Lines 2..C+1: Line i describes cow i's lotion requires with two integers: minSPFi and maxSPFi 
    * Lines C+2..C+L+1: Line i+C+1 describes a sunscreen lotion bottle i with space-separated integers: SPFi and coveri

    Output

    A single line with an integer that is the maximum number of cows that can be protected while tanning

    Sample Input

    3 2
    3 10
    2 5
    1 5
    6 2
    4 1

    Sample Output

    2
     1 #include <iostream>
     2 #include <cstring>
     3 #include <queue>
     4 #include <algorithm>
     5 using namespace std;
     6 struct node
     7 {
     8     int a,b;
     9 }cow[2505],s[2505];
    10 bool cmp(node x,node y)
    11 {
    12     return x.a<=y.a;
    13 }
    14 int main()
    15 {
    16     int c,l;
    17     int i,j;
    18     priority_queue<int,vector<int>,greater<int> > Q;
    19     freopen("in.txt","r",stdin);
    20     scanf("%d%d",&c,&l);
    21     for(i=0;i<c;i++)
    22         scanf("%d%d",&cow[i].a,&cow[i].b);
    23     for(j=0;j<l;j++)
    24         scanf("%d%d",&s[j].a,&s[j].b);
    25     sort(cow,cow+c,cmp);
    26     sort(s,s+l,cmp);
    27     j=0;
    28     int sum=0;
    29     for(i=0;i<l;i++)
    30     {
    31         while(j<c&&cow[j].a<=s[i].a)
    32         {
    33             Q.push(cow[j].b);
    34             j++;
    35         }
    36         while(!Q.empty()&&s[i].b)
    37         {
    38             int t=Q.top();
    39             Q.pop();
    40             if(s[i].a<=t)
    41             {
    42                 sum++;
    43                 s[i].b--;
    44             }
    45         }
    46     }
    47     printf("%d
    ",sum);
    48 }
  • 相关阅读:
    JavaScript 将数组中具有相同值的对象 取出组成新的数组
    css样式初始化
    javaScript如何跳出多重循环break、continue
    vue-cli中webpack配置解析
    Invalid prop: type check failed for prop "XXX". Expected String, got Object.
    vue-cli构建项目添加网站ico的logo
    vue-cli构建的vue项目打包后css引入的背景图路径不对的问题
    从零开始使用vue-cli搭建一个vue项目及注意事项
    安装npm及cnpm(Windows)
    面试题8:旋转数组中的最小数字
  • 原文地址:https://www.cnblogs.com/a1225234/p/5173944.html
Copyright © 2011-2022 走看看