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

Input

  第一行是一个整数N接下来N行每行两个整数T1,T2描述一个建筑:修理这个建筑需要T1秒,如果在T2秒之内还
没有修理完成,这个建筑就报废了。

Output

  输出一个整数S,表示最多可以抢修S个建筑.N < 150,000;

T1 < T2 < maxlongint

Sample Input

4
100 200
200 1300
1000 1250
2000 3200

Sample Output

3

================================================================================================================================

贪心的想,通过排序,让最先被报废的建筑 先修理。并将该建筑的修理时间压入优先队列

如果当前时间与 该建筑的报废时间相冲突。 则与当前队列最大的时间相比较,保证用最优时间。

因此使用优先队列 priority_queue 能快速比较。

================================================================================================================================

代码:

#include<bits/stdc++.h>
using namespace std;
const int N = 15e4 + ;
struct Node{
int t1,t2;
}node[N];
bool cmp(Node a,Node b) {return a.t2<b.t2;}
priority_queue<int> que;
int main()
{
int n; scanf("%d",&n);
for(int i = ;i <= n;++i) scanf("%d %d",&node[i].t1,&node[i].t2); sort(node+,node+n+,cmp); int time = ,sum = ;
for(int i = ;i <= n;++i)
{
//当前时间+该建筑所需时间 <= 该建筑报废的时间
if(time+node[i].t1<=node[i].t2)
{
time += node[i].t1;
//该时间压入优先队列
que.push(node[i].t1);
++sum;
}
//如果不满足上面的条件 且满足该建筑修理的时间小于优先队列中时间最久的
//且减去最大加上当前时间之后能 <= 该建筑报废的时间
else if(node[i].t1<que.top()&&time-que.top()+node[i].t1<=node[i].t2)
{
time = time - que.top() + node[i].t1;
que.pop();
que.push(node[i].t1);
}
}
printf("%d\n",sum);
return ;
}

最新文章

  1. Android性能优化典范第二季
  2. C#生成注册码
  3. Java Job
  4. 通过JavaScript设置样式和jQuey设置样式,还有随机数抛出水果的习题
  5. Java中的Filter过滤器
  6. Android 字体颜色在一些机型上不适配(textcolor失效)
  7. Vuex 源码学习(一)
  8. Linux Debugging(六): 动态库注入、ltrace、strace、Valgrind
  9. 在Python中用Request库模拟登录(三):Discuz论坛(未加密,有验证码,有隐藏验证)
  10. hadoop2-HBase的安装和测试
  11. 移动端弹出层加遮罩后禁止body滑动
  12. event.target解析
  13. BZOJ.5285.[AHOI/HNOI2018]寻宝游戏(思路 按位计算 基数排序..)
  14. 常见模块(二) logging模块
  15. centos7下安装redis的步骤
  16. python - class类 (五) 继承补充-子类继承父类属性/函数方法
  17. 技术思维VS管理思维
  18. Python print() 函数
  19. 2018.10.12 NOIP模拟 字符处理(模拟)
  20. nginx 安装echo模块

热门文章

  1. 解决SQLite打开已有路径下的db问题
  2. NO.008-2018.02.13《折桂令&#183;春情》元代:徐再思
  3. userdel
  4. Spring3+Struts2+Hibernate4+Mybatis整合的一个maven例子
  5. 【牛客挑战赛30D】小A的昆特牌(组合问题抽象到二维平面)
  6. [19/03/20-星期三] 常用类_Enum(枚举)类
  7. 2018.11.26 struts2流程源码
  8. bat 批处理变量
  9. ffmpeg视频和声音
  10. Knowledge Point 20180305 机器数转换与进制转换