【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=1707

【题目大意】

  每个奶牛各自能够忍受的阳光强度有一个最小值和一个最大值
  防晒霜的作用是让阳光照在身上的阳光强度固定为某个值
  每瓶防晒霜给出固定的阳光量和防晒霜数量,每头奶牛只能用一瓶防晒霜
  问最多能晒太阳的奶牛数量

【题解】

  将防晒霜的阳光固定值从小到大扫描,我们发现当这种防晒霜能满足一些牛的需求的时候,
  我们应该选择优先满足最大值较低的牛的需求,这样才是更优的,
  因此我们在扫描防晒霜的过程中,将所有最小值小于等于该防晒霜的牛的最大值加入优先队列,
  每次出队优先队列中最小的数字去使用这个防晒霜,如果这个最小的数字比防晒霜要小,
  那么这头牛在计算答案中一定是被舍弃的。

【代码】

#include <cstdio>
#include <queue>
#include <algorithm>
const int N=3000;
using namespace std;
int n,m;
typedef pair<int,int> P;
priority_queue<int,vector<int>,greater<int> > q;
P cow[N],bottle[N];
int main(){
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)scanf("%d%d",&cow[i].first,&cow[i].second);
for(int i=0;i<m;i++)scanf("%d%d",&bottle[i].first,&bottle[i].second);
sort(cow,cow+n);sort(bottle,bottle+m);
int j=0,ans=0;
for(int i=0;i<m;i++){
while(j<n&&cow[j].first<=bottle[i].first)q.push(cow[j++].second);
while(!q.empty()&&bottle[i].second){
int x=q.top(); q.pop();
if(x<bottle[i].first)continue;
ans++; bottle[i].second--;
}
}printf("%d\n",ans);
return 0;
}

BZOJ 1707 [Usaco2007 Nov]tanning分配防晒霜(扫描线+贪心+优先队列)的更多相关文章

  1. bzoj 1707: [Usaco2007 Nov]tanning分配防晒霜【贪心||最大流(?)】

    洛谷上能过的最大流bzoj上T了--但是贪心做法明明在洛谷上比最大流要慢啊--如果是最大流的话就是裸题了吧 说一下贪心,就按照防晒霜排序,然后对每一个防晒霜选一头可以使用的且r最小的牛 就,没了. 贪 ...

  2. BZOJ 1707: [Usaco2007 Nov]tanning分配防晒霜

    Description 奶牛们计划着去海滩上享受日光浴.为了避免皮肤被阳光灼伤,所有C(1 <= C <= 2500)头奶牛必须在出门之前在身上抹防晒霜.第i头奶牛适合的最小和最 大的SP ...

  3. 1707: [Usaco2007 Nov]tanning分配防晒霜

    1707: [Usaco2007 Nov]tanning分配防晒霜 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 548  Solved: 262[Sub ...

  4. 【BZOJ】1707: [Usaco2007 Nov]tanning分配防晒霜

    [算法]贪心扫描线(+堆) [题意]给定n头牛有区间[a,b],m个防晒霜值为ai,每个可以使用bi次,每次可以使包含它的区间涂到防晒霜,问最多被涂牛数. [题解] 参考:[bzoj1707]: [U ...

  5. BZOJ——T 1707: [Usaco2007 Nov]tanning分配防晒霜

    http://www.lydsy.com/JudgeOnline/problem.php?id=1707 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 8 ...

  6. BZOJ1707:[Usaco2007 Nov]tanning分配防晒霜

    我对贪心的理解:https://www.cnblogs.com/AKMer/p/9776293.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem ...

  7. BZOJ1707 : [Usaco2007 Nov]tanning分配防晒霜

    S向每头奶牛连边,容量1 每个防晒霜向T连边,容量cover 每头奶牛向SPF在自己范围内的防晒霜连边,容量inf 用线段树优化建图跑最大流即可. #include<cstdio> con ...

  8. [BZOJ1707] [Usaco2007 Nov] tanning分配防晒霜 (贪心)

    Description 奶牛们计划着去海滩上享受日光浴.为了避免皮肤被阳光灼伤,所有C(1 <= C <= 2500)头奶牛必须在出门之前在身上抹防晒霜.第i头奶牛适合的最小和最 大的SP ...

  9. 【bzoj1707】[Usaco2007 Nov]tanning分配防晒霜 贪心+Treap

    题目描述 奶牛们计划着去海滩上享受日光浴.为了避免皮肤被阳光灼伤,所有C(1 <= C <= 2500)头奶牛必须在出门之前在身上抹防晒霜.第i头奶牛适合的最小和最 大的SPF值分别为mi ...

随机推荐

  1. JS的prototype和__proto__

    一.prototype和__proto__的概念 prototype是函数的一个属性(每个函数都有一 个prototype属性),这个属性是一个指针,指向一个对象.它 是显示修改对象的原型的属性. _ ...

  2. python进行机器学习(二)之特征选择

    毫无疑问,解决一个问题最重要的是恰当选取特征.甚至创造特征的能力,这叫做特征选取和特征工程.对于特征选取工作,我个人认为分为两个方面: 1)利用python中已有的算法进行特征选取. 2)人为分析各个 ...

  3. vue路由-编程式导航

    除了使用 <router-link> 创建 a 标签来定义导航链接,我们还可以借助 router 的实例方法,通过编写代码来实现. router.push(location, onComp ...

  4. nodejs 优雅的连接 mysql

    1.mysql 及 promise-mysql nodejs 连接 mysql 有成熟的npm包 mysql ,如果需要promise,建议使用 promise-mysql: npm:https:// ...

  5. javascript反混淆之packed混淆

    function getKey() { var aaaafun = function(p, a, c, k, e, d) { e = function(c) { return (c < a ? ...

  6. Android 开发之避免被第三方使用代理抓包

    现象:charles抓不到包,但wireshark,HttpAnalyzor可以抓到包. 关键代码: URL url = new URL(urlStr); urlConnection = (HttpU ...

  7. C基础 内存统一入口

    引言  - malloc 引述 C标准中堆上内存入口就只有 malloc, calloc, realloc . 内存回收口是 free. 常见的一种写法是 struct person * per = ...

  8. 数据类型转换(计算mac地址)

    [root@localhost test1]# vim 19.py //add #!/usr/bin/python macaddr = '00:0C:29:D1:6F:E9' prefix_mac = ...

  9. PCA和SVD

    一.PCA(Principal Component Analysis) 主成分分析,数据从原来的坐标系转换到新的坐标系,只保留新坐标系中的前面几个坐标轴,即对数据进行了降维处理 1.算法描述 (1)第 ...

  10. leetcode 之Reverse Linked List II(15)

    这题用需要非常细心,用头插法移动需要考虑先移动哪个,只需三个指针即可. ListNode *reverseList(ListNode *head, int m, int n) { ListNode d ...