【CF725D】Contest Balloons(贪心,堆)
题意:acm队伍可以得气球,相同气球数是一个排名。每个队伍有一个气球数上限,如果该队伍的气球数大于上限
该队伍被淘汰。给了你队伍的气球数,你的气球可以给别人,问你最大可能的排名。
(2 ≤ n ≤ 300 000) (0 ≤ ti ≤ wi ≤ 10^18)
思路:对每个初始t[i]>t[1]的i,将w[i]-t[i]+1放入小根堆中
开始给气球,将给出气球后大于当前气球数的组的w[i]-t[i]+1继续放入堆中
记录给后名次的最小值即可
const oo=;
var q,a,b,c,d:array[..]of int64; n,m,i,ans,t,w:longint;
s:int64; procedure swap(var x,y:int64);
var t:int64;
begin
t:=x; x:=y; y:=t;
end; procedure qsort(l,r:longint);
var i,j:longint;
mid1,mid2,mid3:int64;
begin
i:=l; j:=r; mid1:=a[(l+r)>>]; mid2:=b[(l+r)>>]; mid3:=c[(l+r)>>];
repeat
while (mid1<a[i])or(mid1=a[i])and(mid2>b[i])or
(mid1=a[i])and(mid2=b[i])and(mid3>c[i]) do inc(i);
while (mid1>a[j])or(mid1=a[j])and(mid2<b[j])or
(mid1=a[j])and(mid2=b[j])and(mid3<c[j]) do dec(j);
if i<=j then
begin
swap(a[i],a[j]); swap(b[i],b[j]); swap(c[i],c[j]);
inc(i); dec(j);
end;
until i>j;
if l<j then qsort(l,j);
if i<r then qsort(i,r);
end; function min(x,y:longint):longint;
begin
if x<y then exit(x);
exit(y);
end; procedure shiftup(x,m:longint);
begin
while (x>)and(q[x]<q[x>>]) do
begin
swap(q[x],q[x>>]);
x:=x>>;
end;
end; procedure shiftdown(x,m:longint);
var t:longint;
begin
while (x<<)<=m do
begin
t:=x<<;
if (t+<=m)and(q[t]>q[t+]) then t:=t+;
if q[x]>q[t] then
begin
swap(q[x],q[t]);
x:=t;
end
else break;
end;
end; begin
//assign(input,'cf725D.in'); reset(input);
//assign(output,'cf725D.out'); rewrite(output);
readln(n);
for i:= to n do
begin
read(a[i],b[i]);
c[i]:=i;
end;
qsort(,n);
for i:= to n do d[c[i]]:=i;
for i:= to d[]- do
begin
inc(m); q[m]:=b[i]-a[i]+; shiftup(m,m);
end;
s:=a[d[]];
for i:= to d[] do
if a[i]>a[d[]] then inc(ans);
inc(ans); t:=ans;
w:=d[]+;
while m> do
begin
if s-q[]>= then
begin
s:=s-q[]; q[]:=oo; shiftdown(,m); dec(t);
while (w<=n)and(a[w]>s) do
begin
inc(m); q[m]:=b[w]-a[w]+; shiftup(m,m);
inc(w); inc(t);
end;
ans:=min(ans,t);
end
else break;
end;
writeln(ans);
//close(input);
//close(output);
end.
【CF725D】Contest Balloons(贪心,堆)的更多相关文章
- codeforces 725D . Contest Balloons(贪心+优先队列)
题目链接:codeforces 725D . Contest Balloons 先按气球数从大到小排序求出初始名次,并把名次排在第一队前面的队放入优先队列,按w-t-1值从小到大优先,然后依次给气球给 ...
- CodeForces - 725D Contest Balloons 贪心
D. Contest Balloons time limit per test 3 seconds memory limit per test 2 ...
- Canada Cup 2016 D. Contest Balloons 好题。优先队列 + 简单贪心
http://codeforces.com/contest/725/problem/D 这题一看就是贪心的了,w - t最小的那个,肯定是优先打死. 但是一直都不会写,为什么呢,因为这个太像二分答案了 ...
- Contest Balloons
Contest Balloons 题目链接:http://codeforces.com/problemset/problem/725/D 贪心+枚举 每次在排名在自己前面的选出w-t值最小的送气球,更 ...
- 【贪心+堆】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个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建 ...
随机推荐
- python-判断alter是否存在
from selenium import webdriver import time from selenium.webdriver.support.ui import WebDriverWait f ...
- Manifest文件
Manifest文件是简单的文本文件,它告知浏览器缓存的内容(或不缓存的内容) Manifest文件可以分为三个部分: 1.CAHCEMANIFEST-在此标题下列出的文件将在首次下载后进行缓存. C ...
- iOSAES加密的实现
+(NSData *)AES256ParmEncryptWithKey:(NSString *)key Encrypttext:(NSData *)text //加密 { char keyPtr[k ...
- 洛谷 2023 [AHOI2009]维护序列
洛谷 2023 [AHOI2009]维护序列 洛谷原题传送门 这个题也是一道经典的线段树模版(其实洛谷的模版二改一下输入顺序就能AC),其中包括区间乘法修改.区间加法修改.区间查询三个操作. 线段树的 ...
- python入门:模拟简单用户登录(自写)
#!/usr/bin/env python # -*- coding: utf-8 -*- #模拟简单用户登录(自写) import getpass a = raw_input("Pleas ...
- IOC容器和Bean的配置
IOC容器和Bean的配置 1 IOC和DI ①IOC(Inversion of Control):反转控制. 在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取 ...
- hihocoder1174 拓扑排序1
#1174 : 拓扑排序·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 由于今天上课的老师讲的特别无聊,小Hi和小Ho偷偷地聊了起来. 小Ho:小Hi,你这学期有选 ...
- 搜索引擎elasticsearch + kibana + X-pack + IK安装部署
目录 准备安装环境 配置启动 启动elasticsearch 启动kibana 启用X-pack 安装使用IK 使用示例 官方Clients 准备安装环境 这次我们安装以下软件或插件: elastic ...
- HUD:2853-Assignment(KM算法+hash)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2853 Assignment Time Limit: 2000/1000 MS (Java/Others) ...
- 蓝桥杯Java输入输出相关
转载自:http://blog.csdn.net/Chen_Tongsheng/article/details/53354169 一.注意点 1. 类名称必须采用public class Main方式 ...