[arc076F]Exhausted? 贪心+堆
Description
有m个椅子,第i个在位置i,每个椅子只能坐一个人。 有n个人,第i个人能坐的椅子的位置j需满足j≤Li或j≥Ri。 现在你可以添加若干个椅子,可以放在任意实数位置。问最少加多少个
Input
第一行两个整数N,MN,M
接下来NN行,每行两个整数Li,RiLi,Ri
Output
输出最小需要增加的数量
Sample Input
Case 1:
4 4
0 3
2 3
1 3
3 4
Case 2:
7 6
0 7
1 5
3 6
2 7
1 6
2 6
3 7
Case 3:
3 1
1 2
1 2
1 2
Case 4:
6 6
1 6
1 6
1 5
1 5
2 6
2 6
Sample Output
Case 1:
0
Case 2:
2
Case 3:
2
Case 4:
2
HINT
1≤N,M≤2∗1051≤N,M≤2∗105
0≤Li<Ri≤M+1(1≤i≤N)0≤Li<Ri≤M+1(1≤i≤N)
所有输入的数都是正整数
Sol
我们把左端点排序,然后用一个堆维护左边安排不下的人的r,每次如果还有空位置就直接放,没有的话就把堆里最大值和现在作比较,选择大的安排座位,小的放堆里
之后右边按顺序安排即可。
Code
#include <bits/stdc++.h>
using namespace std;
int n,m,L,R,hr[200005],ans;priority_queue<int,vector<int>,greater<int> >h;vector<int>hl[200005];char c;
int main()
{
scanf("%d%d",&n,&m);
for(int i=0,l,r;i<n;i++) scanf("%d%d",&l,&r),hl[l].push_back(r);
for(int i=1,t;i<=m;i++) for(vector<int>::iterator it=hl[i].begin();it!=hl[i].end();it++)
{
if(L<i){L++,h.push(*it); continue;}
t=h.top();
if(t>=*it) hr[*it]++;
else h.pop(),hr[t]++,h.push(*it);
}
for(vector<int>::iterator it=hl[0].begin();it!=hl[0].end();it++) hr[*it]++;
R=m+1;ans=hr[m+1];
for(int i=m;i;i--) for(;hr[i]>0;hr[i]--) if(i<R&&L<R-1) R--;else ans++;
printf("%d\n",ans);
}
[arc076F]Exhausted? 贪心+堆的更多相关文章
- [arc076f]Exhausted? - 贪心
题意: 给你m个椅子可以坐人,初始坐标为正整数1~m,有n个人,每个人希望坐的位置$\leq L_i$或者$\geq R_i$,可以添加若干个椅子在任意的实数位置,求最少要添加多少椅子使得所有人都有位 ...
- 【贪心+堆】XMU 1584 小明的烦恼
题目链接: http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1584 题目大意: 给n(n<=100 000)个任务的耗时和截至时间,问最少不能 ...
- BZOJ_2151_种树_贪心+堆+链表
BZOJ_2151_种树_贪心+堆 Description A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树.园林部门得到指令后,初步规划出n个种树的位置,顺时针编 ...
- BZOJ_2006_[NOI2010]超级钢琴_贪心+堆+ST表
BZOJ_2006_[NOI2010]超级钢琴_贪心+堆+ST表 Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的 音乐 ...
- BZOJ_1029_ [JSOI2007]建筑抢修_贪心+堆
BZOJ_1029_ [JSOI2007]建筑抢修_贪心+堆 Description 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是 ...
- 【bzoj4425】[Nwerc2015]Assigning Workstations分配工作站 贪心+堆
题目描述 佩内洛普是新建立的超级计算机的管理员中的一员. 她的工作是分配工作站给到这里来运行他们的计算研究任务的研究人员. 佩内洛普非常懒惰,不喜欢为到达的研究者们解锁机器. 她可以从在她的办公桌远程 ...
- 【bzoj1029】[JSOI2007]建筑抢修 贪心+堆
题目描述 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建 ...
- 【bzoj2802】[Poi2012]Warehouse Store 贪心+堆
题目描述 有一家专卖一种商品的店,考虑连续的n天.第i天上午会进货Ai件商品,中午的时候会有顾客需要购买Bi件商品,可以选择满足顾客的要求,或是无视掉他.如果要满足顾客的需求,就必须要有足够的库存.问 ...
- BZOJ 1724: [Usaco2006 Nov]Fence Repair 切割木板 贪心 + 堆 + 反向思考
Description Farmer John想修理牧场栅栏的某些小段.为此,他需要N(1<=N<=20,000)块特定长度的木板,第i块木板的长度为Li(1<=Li<=50, ...
随机推荐
- 奶牛易物-Alpha版本测试报告
1.在测试过程中总共发现了多少Bug?每个类别的Bug分别为多少个? a. 修复的bug: 1.mapper接口与mapper.xml文件绑定的问题; 2..配置逆向工程的配置文件的问题; 3.在编码 ...
- VUE+WebPack前端游戏设计:实现物体的拖拽动态特效
- java实现最通俗易懂的01背包问题
这几天一直在想背包问题,昨天还有个学长专门讲了,但是还是不是很理解,今天我终于想通了背包问题,其实只要理解了这个思路,不管用什么语言,肯定是能编出来的.下面我就来介绍一下背包问题. 1.题目描述: 有 ...
- 通过args数组获取数据
----------siwuxie095 通过 main 方法的 args数组 可以从控制台获取一组字符串数据 如: package com.s ...
- CloudStack 注册模板脚本分析
注册系统虚拟机模板 /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt 内容如下: usage ...
- CS4.1 RPM打包函数分析
shell举例说明:脚本名称叫test.sh 入参三个: 1 2 3运行test.sh 1 2 3后$*为"1 2 3"(一起被引号包住)$@为"1" &quo ...
- Ubuntu14.04下opencv卸载与重装
参考链接:http://askubuntu.com/questions/334158/installing-opencv http://stackoverflow.com/questions/1313 ...
- $_SERVER['HTTP_REFERER']
$_SERVER['HTTP_REFERER']//获取前一个页面的url地址
- 取得MapReduce的Thread Dump
====2016/5/20: 经过上级指示,为了MR性能调优,需要截取MR的服务器的线程堆栈(Thread Dump) 战友介绍的方法是这样的: ①.使用ps命令[ps -ef | grep java ...
- 使用 ServiceStack 构建跨平台 Web 服务(转)
出处:http://www.cnblogs.com/shanyou/p/3348347.html 本文主要来自MSDN杂志<Building Cross-Platform Web Service ...