【BZOJ1029】【JSOI2007】【建筑抢修】【贪心+堆】
Description
小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了全部z部落的入侵者。可是T部落的基地里已经有N个建筑设施受到了严重的损伤,假设不尽快修复的话,这些建筑设施将会全然毁坏。如今的情况是:T部落基地里仅仅有一个修理工人,尽管他能瞬间到达不论什么一个建筑,可是修复每一个建筑都须要一定的时间。
同一时候,修理工人修理完一个建筑才干修理下一个建筑,不能同一时候修理多个建筑。假设某个建筑在一段时间之内没有全然修理完成。这个建筑就报废了。你的任务是帮小刚合理的制订一个修理顺序。以抢修尽可能多的建筑。
Input
第一行是一个整数N,接下来N行每行两个整数T1,T2描写叙述一个建筑:修理这个建筑须要T1秒。假设在T2秒之内还没有修理完毕。这个建筑就报废了。
Output
输出一个整数S。表示最多能够抢修S个建筑.N < 150,000; T1 < T2 < maxlongint
Sample Input
100 200
200 1300
1000 1250
2000 3200
Sample Output
假设是就替换。。求最大值的时候用堆优化一下就好了。。
#include<iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
int n,now,ans;
struct use{
int last,end;
}e[1000001];
priority_queue<int>q;
bool cmp(use a,use b){return a.end<b.end;}
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;i++) scanf("%d%d",&e[i].last,&e[i].end);
sort(e+1,e+n+1,cmp);
now=0;
for (int i=1;i<=n;i++)
if (now+e[i].last<=e[i].end){ans++;q.push(e[i].last);now+=e[i].last;}
else
{
int x;
if (!q.empty())
{
x=q.top();
if (x>e[i].last&&e[i].last+now<=e[i].end+x)
{
q.pop();
now-=x-e[i].last;
q.push(e[i].last);
}
}
}
cout<<ans;
}
【BZOJ1029】【JSOI2007】【建筑抢修】【贪心+堆】的更多相关文章
- BZOJ1029:[JSOI2007]建筑抢修(贪心,堆)
		Description 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的 入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快 ... 
- BZOJ1029: [JSOI2007]建筑抢修(贪心)
		题目链接:BZOJ1029: [JSOI2007]建筑抢修 题解:贪心思想,按结束时间从小到大排序,选花费时间尽量短的建筑维修,用堆维护. #include<stdio.h> #inclu ... 
- 【bzoj1029】[JSOI2007]建筑抢修  贪心+堆
		题目描述 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建 ... 
- BZOJ 1029 JSOI2007 建筑抢修 贪心+堆
		题目大意:n个建筑须要抢修.第i个建筑须要T1时间抢修.必须在T2时间之前抢修完成.求最多能抢修多少建筑 首先我们对T2排序 然后依次修理 可是这样贪心显然是不对的 比方说这组数据: 5 10 10 ... 
- [JSOI2007]建筑抢修(贪心+后悔)
		[JSOI2007]建筑抢修(贪心+后悔) 洛谷题目传送门 吐槽 这是一道经典的贪心后悔的题目 做过贪心加后悔的题目的应该一眼可以看出来 解题思路 首先按倒塌时间T2排序,再从1枚举到n,能修就修,发 ... 
- bzoj1029: [JSOI2007]建筑抢修(堆+贪心)
		1029: [JSOI2007]建筑抢修 题目:传送门 题解: 一道以前就做过的水题(找个水题签个到嘛...) 很明显就是一道贪心题,这里我们用一个堆来维护 具体看代码吧,很容易YY所以不讲 代码: ... 
- BZOJ1029: [JSOI2007]建筑抢修[模拟 贪心 优先队列]
		1029: [JSOI2007]建筑抢修 Time Limit: 4 Sec Memory Limit: 162 MBSubmit: 3785 Solved: 1747[Submit][Statu ... 
- BZOJ 1029 建筑抢修  贪心+堆
		又搞了一晚上OI,编了两道BZOJ和几道NOI题库,临走之前写两篇感想 noip越来越近了,韩大和clove爷已经开始停课虐我们了... 1029: [JSOI2007]建筑抢修 Time Limit ... 
- bzoj千题计划119:bzoj1029: [JSOI2007]建筑抢修
		http://www.lydsy.com/JudgeOnline/problem.php?id=1029 把任务按截止时间从小到大排序 如果当前时间+当前任务耗时<=当前任务截止时间,把这个任务 ... 
- BZOJ 1029  [JSOI2007]建筑抢修 (贪心 + 优先队列)
		1029: [JSOI2007]建筑抢修 Time Limit: 4 Sec Memory Limit: 162 MBSubmit: 5452 Solved: 2422[Submit][Statu ... 
随机推荐
- pjax使用小结
			简介 虽然传统的ajax方式可以异步无刷新改变页面内容,但无法改变页面URL,因此有种方案是在内容发生改变后通过改变URL的hash的方式获得更好的可访问性(如https://liyu365.gith ... 
- php中curl的详细解说 【转载】
			这几天在帮一些同学处理问题的时候,突然发现这些同学是使用file_get_contents()函数来采集页面内容的,貌似都没有curl的概念亦或是对这种工具特别不敏感, 本文我来给大家详细介绍下cUR ... 
- 【Codeforces】Codeforces Round #374 (Div. 2) -- C. Journey (DP)
			C. Journey time limit per test3 seconds memory limit per test256 megabytes inputstandard input outpu ... 
- HBase与RDBMS的区别
			此讨论并不局限于HBase,也会延伸到MongoDB和Cassandra这样的NoSQL数据库. 1.RDBMS RDBMS有以下特点: 面向视图:RDBMS表使用固定的视图,表中的数据类型也会事先定 ... 
- Lua Time
			-- local getTime = os.date(“%c”); -- %a abbreviated weekday name (e.g., Wed)-- %A full weekday name ... 
- hibernate_08_关联映射_一对多
			hibernate的映射关系 一对多.多对一.一对一.多对多. 常用的是一对多和多对一. 在数据库中可以通过添加主外键的关联,表现一对多的关系:在hibernate中通过在一方持有多方的集合实现,即在 ... 
- 通用功能类:改变WinForm窗体显示颜色
			一.显示窗体调用方法 protected override void OnLoad(EventArgs e) { MDIClientSupport.SetBevel ... 
- js 二级联动
			<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ... 
- Spark中Task,Partition,RDD、节点数、Executor数、core数目的关系和Application,Driver,Job,Task,Stage理解
			梳理一下Spark中关于并发度涉及的几个概念File,Block,Split,Task,Partition,RDD以及节点数.Executor数.core数目的关系. 输入可能以多个文件的形式存储在H ... 
- Java子类对于父类中static方法的继承
			今天看到了Java中子类继承父类的一个相关讨论,在网上综合了各家的观点,写下了一篇简短的总结. 问题如下,在父类中含有staic修饰的静态方法,那么子类在继承父类以后可不可以重写父类中的静态方法呢? ... 
