【算法】贪心扫描线(+堆)

【题意】给定n头牛有区间[a,b],m个防晒霜值为ai,每个可以使用bi次,每次可以使包含它的区间涂到防晒霜,问最多被涂牛数。

【题解】

参考:[bzoj1707]: [Usaco2007 Nov]tanning分配防晒霜 by czllgzmzl

本题同样是区间和点的贪心,可以参考另一道题【BZOJ】1828: [Usaco2010 Mar]balloc 农场分配(经典贪心)

区间和点的贪心有两种经典做法,本题一样。

一、从区间角度出发,按区间右端点排序

区间第二关键字按左端点从小到大排序,防晒霜排序后,对于每个区间选择其最左的防晒霜。

这个过程可以用二分+并查集实现,参考上帝造题2。

二、从点的角度出发,按区间左端点排序

对于每个防晒霜,对左影响一致(左边的能用都用了)的情况下,给右端点最小的。

用堆实现。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cctype>
using namespace std;
const int maxn=;
priority_queue<int,vector<int>,greater<int> >q;
int n,m;
struct interval{int x,y;}b[maxn];
struct point{int x,c;}a[maxn];
bool cmp(interval a,interval b){return a.x<b.x;}
bool cmp2(point a,point b){return a.x<b.x;} int read()
{
char c;int s=,t=;
while(!isdigit(c=getchar()))if(c=='-')t=-;
do{s=s*+c-'';}while(isdigit(c=getchar()));
return s*t;
}
int main(){
m=read();n=read();
for(int i=;i<=m;i++)b[i].x=read(),b[i].y=read();
for(int i=;i<=n;i++)a[i].x=read(),a[i].c=read();
sort(b+,b+m+,cmp);
sort(a+,a+n+,cmp2);
int now=,ans=;
for(int i=;i<=n;i++){
while(now<m&&b[now+].x<=a[i].x)now++,q.push(b[now].y);
for(int j=;j<=a[i].c;j++){
while(!q.empty()&&q.top()<a[i].x)q.pop();
if(q.empty())break;
ans++;q.pop();
}
}
printf("%d",ans);
return ;
}

【BZOJ】1707: [Usaco2007 Nov]tanning分配防晒霜的更多相关文章

  1. BZOJ 1707 [Usaco2007 Nov]tanning分配防晒霜(扫描线+贪心+优先队列)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1707 [题目大意] 每个奶牛各自能够忍受的阳光强度有一个最小值和一个最大值 防晒霜的作 ...

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

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

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

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

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

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

  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. lintcode-501-迷你推特

    501-迷你推特 实现一个迷你的推特,支持下列几种方法 postTweet(user_id, tweet_text). 发布一条推特. getTimeline(user_id). 获得给定用户最新发布 ...

  2. lintcode-402-连续子数组求和

    [402-连续子数组求和(http://www.lintcode.com/zh-cn/problem/continuous-subarray-sum/) 给定一个整数数组,请找出一个连续子数组,使得该 ...

  3. Chrome浏览器超强调试工具

    原文:http://lizanhong2011.blog.163.com/blog/static/18028516720117301312729/ 在Google Chrome浏览器出来之前,我一直使 ...

  4. 如何通过JAVA让DB2调用操作系统命令

    引言:我们在工作中常用操作系统命令和DB2命令对数据库做数据的导入.导出等操作,但是DB2不支持复合SQL 语句调用操作系统命令,因此我们需要利用 UDF 来执行SQL 中不可用的操作(例如:执行一些 ...

  5. Spring源码解析 – AnnotationConfigApplicationContext容器创建过程

    Spring在BeanFactory基础上提供了一些列具体容器的实现,其中AnnotationConfigApplicationContext是一个用来管理注解bean的容器,从AnnotationC ...

  6. Java中final修饰符深入研究

    一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很 ...

  7. eclipse官方网址、各个版本的下载

    Eclipse3.1后各版本代号 (2013-07-10 20:48:42) 转载▼   分类: Java Eclipse 3.1 版本代号 IO [木卫1,伊奥]  Eclipse 3.2 版本代号 ...

  8. 【移动端debug-3】部分安卓机型不触发touchend事件的解决方案

    最近在项目中遇到一个奇怪的问题,有一个需求是这样:页面上有一个按钮,滚动页面时让它消失,停止滚动时让它显示. 常规思路: step1.监听touchstart事件,记录Touch对象中pageY初始值 ...

  9. UVA12546_LCM Pair Sum

    题目的意思是求 [西伽马(p+q)]其中lcm(p,q)=n. 又见数论呀. 其实这个题目很简单,考虑清楚了可以很简单的方法飘过. 我一开始是这样来考虑的. 对于每一个单独的质因子,如果为p,它的次数 ...

  10. Streaming Big Data: Storm, Spark and Samza--转载

    原文地址:http://www.javacodegeeks.com/2015/02/streaming-big-data-storm-spark-samza.html There are a numb ...