Sunscreen
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 5378   Accepted: 1864

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

有C头牛,每头牛有自己的承受阳光的最小值和最大值。现在有L瓶防晒霜,能够保持,一定数额的阳光。。。。然后还有一定的数量。问最多有多少头牛是被保护着的。

对牛进行排序,承受阳光小的放前面。

对防晒霜进行排序,保持阳光小的放在前面。

对每一种防晒液进行遍历,然后把能塞进来的牛即牛的最小值<防晒霜的值,都塞到优先队列中来。然后优先队列往外面是按照牛的最大值的递增顺序,先往外面弹小的,然后往外面弹大的。这样贪心就能够保证如果成功是最优的结果,失败了的话后面的防晒霜也不可能符合规格了。

代码:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#include <queue>
#include <map>
#pragma warning(disable:4996)
using namespace std; struct no1 {
int min_v;
int max_v;
}cow[2505],lotion[2505]; int num_c, num_l; bool cmp2(no1 x, no1 y)
{
if (x.min_v == y.min_v)
{
return x.max_v < y.max_v;
}
else
{
return x.min_v < y.min_v;
}
} class cmp
{
public:
bool operator()(int x, int y)
{
return x > y;
}
}; priority_queue<int, vector<int>, cmp>qu; int main()
{
int i,j,ans;
scanf("%d%d", &num_c, &num_l); for (i = 1; i <= num_c; i++)
{
scanf("%d%d", &cow[i].min_v, &cow[i].max_v);
}
for (i = 1; i <= num_l; i++)
{
scanf("%d%d", &lotion[i].min_v, &lotion[i].max_v);
}
sort(cow + 1, cow + num_c + 1, cmp2);
sort(lotion + 1, lotion + num_l + 1, cmp2); j = 1;
ans = 0; for (i = 1; i <= num_l;i++)
{
while (j <= num_c && cow[j].min_v <= lotion[i].min_v)
{
qu.push(cow[j].max_v);
j++;
}
while (qu.size() != 0 && lotion[i].max_v != 0)
{
int x = qu.top();
qu.pop();
if (x < lotion[i].min_v)
{
continue;
}
else
{
ans++;
lotion[i].max_v--;
}
}
}
cout << ans << endl;
return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

POJ 3614:Sunscreen 贪心+优先队列的更多相关文章

  1. poj -3614 Sunscreen(贪心 + 优先队列)

    http://poj.org/problem?id=3614 有c头奶牛在沙滩上晒太阳,每头奶牛能忍受的阳光强度有一个最大值(max_spf) 和最小值(min_spf),奶牛有L种防晒霜,每种可以固 ...

  2. POJ 3614 Sunscreen 贪心

    题目链接: http://poj.org/problem?id=3614 Sunscreen Time Limit: 1000MSMemory Limit: 65536K 问题描述 to avoid ...

  3. 优先队列:POJ No 3614 Sunscreen 贪心

    Sunscreen Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6410   Accepted: 2239 Descrip ...

  4. POJ 3614 Sunscreen 优先队列 贪心

    题意 有C个奶牛去晒太阳 (1 <=C <= 2500),每个奶牛各自能够忍受的阳光强度有一个最小值和一个最大值,太大就晒伤了,太小奶牛没感觉. 而刚开始的阳光的强度非常大,奶牛都承受不住 ...

  5. 【POJ 3614 Sunscreen】贪心 优先级队列

    题目链接:http://poj.org/problem?id=3614 题意:C头牛去晒太阳,每头牛有自己所限定的spf安全范围[min, max]:有L瓶防晒液,每瓶有自己的spf值和容量(能供几头 ...

  6. Sunscreen POJ - 3614(贪心)

    To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2500) cows must cover her hide with s ...

  7. POJ 3614 Sunscreen (优先队列)

    题意:奶牛美容:有C头奶牛日光浴,每头奶牛分别需要minSPF_i和maxSPF_i单位强度之间的阳光.现有L种防晒霜,分别能使阳光强度稳定为SPF_i,其瓶数为cover_i.求最多满足多少头奶牛 ...

  8. POJ 3614 Sunscreen(贪心,区间单点匹配)

    把牛的SPF看作一个区间,防晒霜看作点.一个点可以匹配C[i]次,问最大匹配数.可以用图论做. 也可以贪心.贪心的思想是,把区间和点排序以后,考虑最左边的点,加入和这个点相交的区间, 并排除出界的区间 ...

  9. poj 3614 Sunscreen

                                                                                                        ...

随机推荐

  1. springmvc面试问题

    1.讲下SpringMvc和Struts1,Struts2的比较的优势 性能上Struts1>SpringMvc>Struts2 开发速度上SpringMvc和Struts2差不多,比St ...

  2. org.apache.commons.logging.LogFactory 错误原因

    上述问题的原因是因为在使用Spring框架时没有导入这个包导致的,导入这个包就ok了.

  3. JavaScript一个简单的图片切换布局

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. BZOJ 4166: 月宫的符卡序列

    如果使用回文树,节点 \(u\) 的回文串和 \(fail_u\) 的回文串中心不一样,因为回文树的 \(fail\) 指针指向的是最长回文后缀,没法快速解决异或和 考虑魔改回文树,用马拉车来解决,扩 ...

  5. 1 网页及浏览器内核&Web标准

    网页的组成: 主要由文字.图像和超链接等元素构成,还可以包含音频.视频以及flash. 浏览器内核: 浏览器内核分为两部分: 1 渲染引擎(layout engineer) 渲染引擎负责取得网页的内容 ...

  6. 【转帖】IBM发布全新闪存解决方案,助企业存储架构做减法

    IBM发布全新闪存解决方案,助企业存储架构做减法 http://stor-age.zhiding.cn/stor-age/2020/0227/3124851.shtml 感觉 配图弄错了 FlashS ...

  7. 用java实现输出英文小说飘中出现次数最多的前N个单词(附:使用文件读写)

    本文参考于:https://blog.csdn.net/u014204432/article/details/40348839 一.题目 输出单个文件(<飘> 英文版)中的前 N 个最常出 ...

  8. 三星 S10 运行 Ubuntu 系统

    导读 DeX 是一种模仿桌面操作系统的用户 UI 界面,把支持 DeX 的三星手机用数据线连上外置显示器,用户就可以获得一种类似桌面系统的使用体验. 三星 S8.Note 8.S9.Note 9.S1 ...

  9. 多线程分析之Semaphore

    Semaphore分析由来 网上看了许多讲解Semaphore的,用Semaphore来实现顺序打印字母,但是可能大家都没有清楚具体的原因,所以来给大家分析下为什么可以使用Semaphore来实现顺序 ...

  10. 三、多线程基础-自旋_AQS_多线程上下文

    1. 自旋理解    很多synchronized里面的代码只是一些很简单的代码,执行时间非常快,此时等待的线程都加锁可能是一种不太值得的操作,因为线程阻塞涉及到用户态和内核态切换的问题.既然sync ...