传送门:牛客

题目描述

小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落
的入侵者。但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建筑设\
施将会完全 毁坏。
现在的情况是:T部落基地里只有一个修理工人,虽然他能瞬间到达任何一个建筑,但是修复每个建筑都需
要一定的时间。同时,修理工人修理完一个建筑才能修理下一个建筑,不能同时修理多个建筑。
如果某个建筑在一段时间之内没有完全修理完毕,这个建筑就报废了。你的任务是帮小刚合理的制订一个
修理顺序,以抢修尽可能多的建筑。
输入:
4
100 200
200 1300
1000 1250
2000 3200
输出:
3

这道题算是一道单调队列的经典题目吧.它的主要思路感觉和这道题,还是很像的.可以先去做做那道题再来解决这道题.

主要思路:

  1. 对于这道题我们准备维护一个优先队列.首先我们先将每一个建筑按照完成的时间进行排序,并且每加入一个新的建筑,我们都将其的消耗时间进行累计,并且将目前为止的总消耗时间与该建筑的完成时间进行比较,如果在完成时间,直接push即可,如果不在完成时间内,说明我们需要去除前面的一些建筑才行,此时我们需要去除时间最大的那个建筑(贪心思想),为什么这个贪心思想是正确的呢,因为之前我们的队列中的建筑都是合法的,此时我们无论是去除小的那一个,还是大的那一个,我们都会失去一个贡献,那么显然的如果选择取出的是大的那一个,我们之后的建筑就更有机会进行维修了.并且即使此时我们加入的建筑并不是最优的,我们也没有任何关系,因为我们是先将其加入我们的队列中的,所以我们也是可以直接将他取出的.
  2. 总的来说就是截止到任何建筑,(只要花费时间比之前最大的要小,我们就可以将其加入,并将队顶的删除反之则不加),如果我们的建筑的时间累加还是合法的话,直接加入即可,不用删除队顶
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <string.h>
#include <stack>
#include <deque>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
#define root 1,n,1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
#define maxn 1000000
#define ll_maxn 0x3f3f3f3f3f3f3f3f
const double eps=1e-8;
int n;
struct Jianzhu{ll t1,t2;
}jianzhu[maxn];
bool cmp(Jianzhu a,Jianzhu b) {if(a.t2!=b.t2) return a.t2<b.t2;else return a.t1<b.t1;
}
priority_queue<ll>q;
int max(ll a,ll b) {if(a>b) return a;else return b;
}
int main() {n=read();for(int i=1;i<=n;i++) {jianzhu[i].t1=read();jianzhu[i].t2=read();}sort(jianzhu+1,jianzhu+n+1,cmp);ll ans=0;ll maxx=-inf;for(int i=1;i<=n;i++) {q.push(jianzhu[i].t1);ans+=jianzhu[i].t1;if(jianzhu[i].t2<ans) {ans-=q.top();q.pop();}maxx=max(q.size(),maxx);}cout<<maxx<<endl;return 0;
}

刷题记录:牛客NC20154[JSOI2007]建筑抢修相关推荐

  1. 刷题记录:牛客NC24608[USACO 2011 Ope S]Learning Languages

    传送门:牛客 题目描述: [USACO11OPEN]Learning Languages S 农夫约翰的 N ( 2 < = N < = 10 , 000 ) N(2<=N<= ...

  2. 刷题记录:牛客NC16129小小粉刷匠

    传送门:牛客 题目描述: "lalala,我是一个快乐的粉刷匠",小名一边快活地唱着歌,一边开心地刷着墙",兴致突然被打断,"小名,你今天如果刷不 完这一栋楼的 ...

  3. 刷题记录:牛客NC17889新建 Microsoft Office Word 文档

    传送门:牛客 题目描述: CSL正在学习<计算机办公自动化>文件的建立与删除. CSL发现,当他新建一个word文档时,会得到一个名为"新建 Microsoft Office W ...

  4. 刷题记录:牛客NC17193简单瞎搞题

    传送门;牛客 题目描述: 一共有 n个数,第 i 个数是 xi xi 可以取 [ l i , r i ] [li , ri] [li,ri] 中任意的一个值. 设 S = ∑ x i 2 S = \s ...

  5. 刷题记录:牛客NC16122郊区春游

    传送门:牛客 题目描述: 今天春天铁子的班上组织了一场春游,在铁子的城市里有n个郊区和m条无向道路,第i条道路连接郊区Ai和Bi, 路费是Ci.经过铁子和顺溜的提议,他们决定去其中的R个郊区玩耍(不考 ...

  6. 刷题记录:牛客NC24083Greedy Gift Takers

    传送门:牛客 题目描述 Farmer John's nemesis, Farmer Nhoj, has NNN cows (1≤N≤1051 \leq N \leq 10^51≤N≤105), con ...

  7. 刷题记录:牛客NC20811蓝魔法师

    传送门:牛客 题目描述: "你,你认错人了.我真的,真的不是食人魔."--蓝魔法师 给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于等于k,两种方案不 同当且仅当存在 ...

  8. 刷题记录:牛客NC20875舔狗舔到最后一无所有

    传送门:牛客 题目描述: 作为队伍的核心,forever97很受另外两个队友的尊敬. Trote_w每天都要请forever97吃外卖,但很不幸的是宇宙中心forever97所在的学校周围只有3家fo ...

  9. 刷题记录:牛客NC15162小H的询问

    传送门:牛客 题目描述: 小H给你一个数组{a},要求支持以下两种操作: 1. 0 l r(1<=l<=r<=n),询问区间[l,r]中权值和最大的有效子区间的权值和,一个子区间被认 ...

最新文章

  1. Android 替换TextView 里面指定的符号
  2. python转换数据类型(int、float、str、eval、tuple、list、chr、ord、bin、oct、hex)
  3. java整形超过,Java整形溢出处理机制。
  4. 两个单链表相交的一系列问题
  5. Spring 连接 PostgreSQL
  6. Intel Hex概述
  7. Java面向对象基础接口和抽象的理解
  8. 记录——《C Primer Plus (第五版)》第八章编程练习第五题
  9. Monkeyrunner介绍
  10. npm 常见用法小结
  11. 织梦cms高端炫酷网络建站工作室公司网站模板
  12. 移动云计算中选择推广应用程序的战术
  13. 已知 XYZ+YZZ=532,其中,X、Y、Z 为数字,编程求出 X、Y 和 Z 的值。
  14. 圣诞表白html,圣诞节表白语 圣诞节表白情话
  15. Cat4模块SIM7600CE介绍
  16. 四川大学2019计算机考研,四川大学考研全攻略篇(各学院2019年考研详解、报考建议...)...
  17. C/C++语言100题练习计划 83——背包问题(贪心算法实现)
  18. Python 安装pyqt—tools失败,记录
  19. 《“桥板灯”的来历》——游城“明经胡氏”
  20. 实现百度下拉菜单实例(利用jsonp跨域请求百度数据接口)

热门文章

  1. PHP开启magic扩展,php.ini中Magic_Quotes_Gpc开关设置
  2. Android仿IOS解锁密码界面-自定义view系列(6)
  3. unity学习 -- 游戏资源导入
  4. Cow Gymnastics//队列//排位1
  5. css+div如何解决内容的溢出
  6. mysql悲观群_谈谈mysql的悲观和乐观锁
  7. 值得推荐的几部日本电影(一)
  8. 新网站多久被google收录?谷歌当天收录网站靠谱吗?
  9. 史上最全的CSS hack方式一览(解决IE6-IE11,Firefox/Safari/Opera/Chrome兼容问题)
  10. 计算机点火工作原理,简述汽车发动机ECU工作原理