zoukankan      html  css  js  c++  java
  • poj3614 Sunscreen【贪心】

    Sunscreen
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 11772   Accepted: 4143

    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

    Source

    题意:

    有c头牛,每头牛有一个区间。有l种防晒霜,每种有一个spf值和对应的瓶数。牛只能用在他区间内的防晒霜。问最多能有多少牛被涂。

    思路:

    按minspf排序,每次取minspf最高的一头牛,给他安排可以被安排的spf值最高的防晒霜。

    因为我们这样排了序之后,能给minspf高的牛用的防晒霜肯定也能给minspf低一些的牛用。

    这时候就要尽量用spf值高的。

     1 #include <iostream>
     2 #include <set>
     3 #include <cmath>
     4 #include <stdio.h>
     5 #include <cstring>
     6 #include <algorithm>
     7 #include <vector>
     8 #include <queue>
     9 #include <map>
    10 //#include <bits/stdc++.h>
    11 using namespace std;
    12 typedef long long LL;
    13 #define inf 0x7f7f7f7f
    14 
    15 int c, l;
    16 const int maxn = 2505;
    17 struct lotion{
    18     int spf;
    19     int cover;
    20 }lo[maxn];
    21 struct mow{
    22     int minspf, maxspf;
    23 }cow[maxn];
    24 
    25 bool cmpcow(mow a, mow b)
    26 {
    27     if(a.minspf == b.minspf){
    28         return a.maxspf < b.maxspf;
    29     }
    30     return a.minspf < b.minspf;
    31 }
    32 
    33 bool cmplo(lotion a, lotion b)
    34 {
    35     return a.spf < b.spf;
    36 }
    37 
    38 int main()
    39 {
    40     while(scanf("%d%d", &c, &l) != EOF){
    41         for(int i = 0; i < c; i++){
    42             scanf("%d%d", &cow[i].minspf, &cow[i].maxspf);
    43         }
    44         //cout<<cow[0].minspf<<" "<<cow[0].maxspf<<endl;
    45         for(int i = 0; i < l; i++){
    46             scanf("%d%d", &lo[i].spf, &lo[i].cover);
    47         }
    48         sort(cow, cow + c, cmpcow);
    49         //cout<<cow[0].minspf<<" "<<cow[0].maxspf<<endl;
    50         sort(lo, lo + l, cmplo);
    51 
    52         int cnt = 0;
    53         for(int i = c - 1; i >= 0; i--){
    54             for(int j = l - 1; j >= 0; j--){
    55                 if(lo[j].spf < cow[i].minspf)break;
    56                 if(lo[j].spf <= cow[i].maxspf && lo[j].cover > 0 && lo[j].spf >= cow[i].minspf){
    57                     lo[j].cover--;
    58                     cnt++;
    59                     break;
    60                 }
    61             }
    62         }
    63         printf("%d
    ", cnt);
    64     }
    65     return 0;
    66 }
  • 相关阅读:
    【JavaScript从入门到精通】第二课 初探JavaScript魅力-02
    【JavaScript从入门到精通】第一课 初探JavaScript魅力-01
    程序员技术周刊
    【Geek软技能】程序员,为什么写不好一份简历?
    众里寻他千百度?No!这项技术只需走两步就能“看穿”你!
    PornHub 正式发布 AI自动标注色情演员引擎
    9 月份 GitHub 上最火的 JavaScript 开源项目!
    累了吗?来挑战一下算法趣题,看看自己是哪个段位的程序猿吧!
    Chrome 开发者控制台中,你可能意想不到的功能
    现代软件工程 作业 最后一周总结
  • 原文地址:https://www.cnblogs.com/wyboooo/p/9901449.html
Copyright © 2011-2022 走看看