Sunscreen

Descriptions

C (1 ≤ C ≤ 2500) 头奶牛在海滩边晒太阳,要避免在日光浴时产生难看的灼伤,每头奶牛必须用防晒霜覆盖它的皮肤。第 i 头奶牛有一个最小和最大 SPF 值 (1 ≤ minSPFi ≤ 1,000; minSPFi ≤ maxSPFi ≤ 1,000) 将会起作用。如果 SPF 值太低,则奶牛会受到日光灼伤;如果 SPF 值太高,则牛奶无法进行日光浴。

奶牛们有一个野餐篮子,带了 L (1 ≤ L ≤ 2500) 瓶防晒霜乳液,第 i 瓶的 SPF 值是 SPFi(1 ≤ SPFi ≤ 1,000) 。第 i 瓶防晒霜可以涂抹覆盖 coveri 头奶牛。一头牛奶只能用一瓶防晒霜涂抹。

对于给定的防晒霜乳液,最多可以有多少头奶牛能够在日光浴时避免被灼伤?

输入

* 第 1 行: 两个以空格分隔的整数: C 和 L
* 第 2 到 C+1 行: 第 i 行描述了第 i 头奶牛的防晒霜约束条件,包括两个整数: minSPFi 和 maxSPFi 
* 第 C+2 到 C+L+1 行: 第 i+C+1 行描述了第 i 个防晒霜瓶,包括以空格分隔的整数: SPFi和 coveri


输出

只包含一个整数的单行,表示日光浴时受到防晒保护的奶牛的最大数量。


示例输入

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

示例输出

2

题目链接

https://vjudge.net/problem/POJ-3614

将奶牛按照SPF值的最小值从小到大排序。

将防晒霜也按照SPF的值从小到大排序

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

然后优先队列是小值先出

priority_queue<int, vector<int>, greater<int> > qi2;//从小到大的优先级队列,可将greater改为less,即为从大到小

AC代码

#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#define IOS ios_base::sync_with_stdio(0); cin.tie(0);
#define Mod 1000000007
#define eps 1e-6
#define ll long long
#define INF 0x3f3f3f3f
#define MEM(x,y) memset(x,y,sizeof(x))
#define Maxn 100000+5
using namespace std;
int C,L;
typedef pair<int,int> P;
priority_queue<int,vector<int>,greater<int> >q;//优先队列
P cow[Maxn],sun[Maxn];//奶牛 防晒霜
int main()
{
cin>>C>>L;
for(int i=;i<C;i++)//存数据
cin>>cow[i].first>>cow[i].second;
for(int i=;i<L;i++)
cin>>sun[i].first>>sun[i].second;
sort(cow,cow+C);//排序
sort(sun,sun+L);
int j=,ans=;
for(int i=;i<L;i++)
{
while(j<C&&cow[j].first<=sun[i].first)//奶牛FPS最小值小于防晒霜的FPS
{
q.push(cow[j].second);//奶牛入队
j++;
}
while(!q.empty()&&sun[i].second)
{
int now=q.top();
q.pop();
if(now<sun[i].first)//奶牛FPS最大值小于防晒霜的FPS,不符合
continue;
ans++;//若符合,则奶牛数+1
sun[i].second--;//防晒霜数量-1
}
}
cout<<ans<<endl;
return ;
}

【POJ - 3614】Sunscreen (优先队列)的更多相关文章

  1. POJ 3614 Sunscreen 优先队列 贪心

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

  2. POJ 3614 Sunscreen (优先队列)

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

  3. POJ 3614 Sunscreen 贪心

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

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

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

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

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

  6. poj 3614 Sunscreen

                                                                                                        ...

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

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

  8. poj 3431 Expedition 优先队列

    poj 3431 Expedition 优先队列 题目链接: http://poj.org/problem?id=2431 思路: 优先队列.对于一段能够达到的距离,优先选择其中能够加油最多的站点,这 ...

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

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

随机推荐

  1. object xml

    http://stackoverflow.com/questions/17739330/xmlserializer-convert-c-sharp-object-to-xml-string http: ...

  2. struts2之登陆拦截

    针对登录拦截功能,我们需要设置拦截哪些方法和不拦截哪些方法 action action类中,处理登录时,将用户.密码绑定到session ActionContext ac = ActionContex ...

  3. C# 设置程序开机自启动

    设置启动 //设置开机自启动 string path = Application.ExecutablePath; RegistryKey rk = Registry.LocalMachine; Reg ...

  4. mybatis注解大全

    注解 目标 相对应的 XML 描述 @CacheNamespace 类 <cache> 为给定的命名空间 (比如类) 配置缓存. 属性:implemetation,eviction, fl ...

  5. [React] Create a Persistent Reference to a Value Using React useRef Hook

    The useRef is a hook for creating values that persist across renders. In this lesson we'll learn how ...

  6. HDU–5988-Coding Contest(最小费用最大流变形)

    Coding Contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  7. JS判断开始时间不能大于检查结束时间

    //用来检验检查开始时间不能大于检查结束时间 function checkDate(date){ var startDate = $("#jcrwModel_rwfqsj").va ...

  8. 给类或者类的对象添加打印内容 def __repr__(self)

    通常情况下 打印一个类或者类的对象 会显示 xx.xx object at 0xaaaaabbbbbbb  只会告诉你这个对象或者类 储存在某个内存中,这是因为你的类没有实现相关的打印功能 print ...

  9. Python实现Dijkstra算法

    # Dijkstra.狄杰斯特拉 import heapq import math def init_distance(graph, s): distance = {s: 0} for vertex ...

  10. Mysql索引查询失效的情况

    首先,复习一下索引的创建: 普通的索引的创建: CREATE INDEX  (自定义)索引名  ON  数据表(字段); 复合索引的创建: CREATE INDEX  (自定义)索引名  ON  数据 ...