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

Sample Input

Sample Output

题意:

  有C个奶牛去晒太阳 (1 <=C <= 2500),每个奶牛各自能够忍受的阳光强度有一个最小值和一个最大值,太大太小都没有作用。

  而刚开始的阳光的强度非常大,奶牛都承受不住,然后奶牛就得涂抹防晒霜,防晒霜的作用是让阳光照在身上的阳光强度固定为某个值。

  那么为了不让奶牛烫伤,又不会没有效果。

  给出了L种防晒霜。每种的数量和固定的阳光强度也给出来了

  每个奶牛只能抹一瓶防晒霜,最后问能够享受晒太阳的奶牛有几个。

思路:

  防晒霜从小到大排序

  奶牛能承受的最小值从小到大排序

  从最小的防晒霜枚举,将所有符合最小值小于等于该防晒霜的奶牛的最大值放入优先队列之中。

  然后优先队列是小值先出

  因为把牛能承受的最小值从小到大排序后,牛能承受的最大值越小,则这只牛能选择的防晒霜的种类越受限,也就是说如果一只牛能承受1-3,另一只能承受1-5,有一个2的防晒霜,则这个防嗮爽优先给能承受1-3的使用。

  所以就可以将这些最大值中的最小的取出来

代码:

#include<stdio.h>
#include<stack>
#include<algorithm>
#include<queue>
#include<iostream>
#include<string.h>
#include<string>
using namespace std;
struct node
{
int begin;
int end;
} cow[];
struct node1
{
int number;
int spf;
} l[];
bool cmp(struct node a,struct node b)
{
return a.begin<b.begin;
}
bool cmp1(struct node1 a,struct node1 b)
{
return a.spf<b.spf;
}
int main()
{
int m,n,logo=;
scanf("%d%d",&m,&n);
for(int i=; i<m; i++)
scanf("%d%d",&cow[i].begin,&cow[i].end);
// cin>>cow[i].begin>>cow[i].end;
for(int i=; i<n; i++)
scanf("%d%d",&l[i].spf,&l[i].number);
//cin>>l[i].spf>>l[i].number;
sort(l,l+n,cmp1);//将防晒霜从小到大排序
sort(cow,cow+m,cmp);//将牛能承受的最小值从小到大排序
priority_queue<int, vector<int>,greater<int> >q;//存储牛能承受的防晒霜的最大值
int ans=,j=;
for(int i=; i<n; i++)//枚举防晒霜
{
while(j<m&&cow[j].begin<=l[i].spf)//如果牛能承受的最小值小于防晒霜的值,将牛能承受的最大值入优先队列
{
q.push(cow[j].end);
j++;
}
while(!q.empty()&&l[i].number)//从小到大出队,将防晒霜给牛用,直到这种防晒霜用完。
{
int cnt=q.top();
q.pop();
if(cnt>=l[i].spf)
{
ans++;
l[i].number--;
}
}
}
printf("%d",ans);
//cout<<ans; }
/*
5 3
3 10
2 5
4 8
4 6
3 5
7 1
9 1
6 2
*/

  

POJ3614 Sunscreen 优先队列+贪心的更多相关文章

  1. poj3614 Sunscreen(贪心+STL)

    https://vjudge.net/problem/POJ-3614 如果这不是优先队列专题里的,我可能不一定能想到这么做. 结构体命名得有点不好,解题中看着Edge这个不恰当的命名,思路老是断掉. ...

  2. POJ--3614 Sunscreen(贪心)

    题目 3614 Sunscreen 2500*2500直接排序暴力贪心 #include<iostream> #include<cstring> #include<alg ...

  3. POJ 3614 Sunscreen 优先队列 贪心

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

  4. poj3614 Sunscreen【贪心】

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

  5. 最高的奖励 - 优先队列&贪心 / 并查集

    题目地址:http://www.51cpc.com/web/problem.php?id=1587 Summarize: 优先队列&贪心: 1. 按价值最高排序,价值相同则按完成时间越晚为先: ...

  6. POJ2431 优先队列+贪心 - biaobiao88

    以下代码可对结构体数组中的元素进行排序,也差不多算是一个小小的模板了吧 #include<iostream> #include<algorithm> using namespa ...

  7. hdu3438 Buy and Resell(优先队列+贪心)

    Buy and Resell Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  8. [POJ3614]Sunscreen (贪心)

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

  9. POJ3614 Sunscreen 贪心入门

    题目大意 给出一些区间和一些点,一个点如果在一个区间内,那么此两者可以匹配.问匹配数最大是多少. 题解 这样的题我们一般都是站在区间上去找与其配对的点.我们可以得到如下性质: 对于一段区间\([l_1 ...

随机推荐

  1. 如何自定义容器网络?- 每天5分钟玩转 Docker 容器技术(33)

    除了 none, host, bridge 这三个自动创建的网络,用户也可以根据业务需要创建 user-defined 网络. Docker 提供三种 user-defined 网络驱动:bridge ...

  2. Android 串口设置校验位、速率、停止位等参数

    Android 串口通讯设置校验位.速率.停止位等参数 最近业余时间有个android项目需要和硬件进行通信,通讯方式都是通过串口,android串口通讯google有个开源的demo 和很多人一样我 ...

  3. DOCKER 从入门到放弃(二)

    搜索镜像 从docker官方镜像仓库搜索镜像 docker search [OPTIONS] TERM OPTIONS: --automated :只显示自动创建的镜像,默认值为fasle --fil ...

  4. Web开发资料

    慢慢更新 1. Quackit 墙裂推荐!提供了一系列教程,bootstrap的模板也很好用. 2. Bootstrap 4 Cheat Sheet 好用,比官网更加一目了染.  3.Chart. ...

  5. H3CNE实验:通过Console端口本地访问H3C设备

    连接好Console线后,将交换机开机,在SecureCRT上会显示如下信息: Starting...... RAMLine.....OK System is booting............. ...

  6. Universal asynchronous receiver transmitter (UART)

    UART基本介绍: 通用异步收发器UART他的功能非常强大 我们只使用UART的全双工异步通信功能,使用中断接收数据. UART_RX:串行数据输入. UART_TX:串行数据输出. 硬件支持: 连接 ...

  7. Python查看MQ队列深度

    分享一段代码,很简单但是也很实用. #!/usr/bin/python #-*- coding:gb18030 -*- ''' Usage: mq.py [Qmgr] *get the queues' ...

  8. NEWS-包名-baseTest-类名-ConfigManager

    package baseTest; import java.io.IOException;import java.io.InputStream;import java.util.Properties; ...

  9. gradle的安装,配置,构建,研究,初体验......(入职一周研究的第一个大知识点)

    (1)Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置.更 ...

  10. KMP算法(研究总结,字符串)

    KMP算法(研究总结,字符串) 前段时间学习KMP算法,感觉有些复杂,不过好歹是弄懂啦,简单地记录一下,方便以后自己回忆. 引入 首先我们来看一个例子,现在有两个字符串A和B,问你在A中是否有B,有几 ...