[JSOI2007]建筑抢修(贪心+后悔)

洛谷题目传送门

吐槽

这是一道经典的贪心后悔的题目

做过贪心加后悔的题目的应该一眼可以看出来

解题思路

  • 首先按倒塌时间T2排序,再从1枚举到n,能修就修,发现不能修就从前面找一个修的最慢的来后悔,当然,前提是这个最慢的要比现在要修的慢,不难证明这样肯定更优(节省了时间修后面的)。嗯,做完了,没了,代码实现基本没难度
  • 还有,用堆来维护前面修过的最大值。

    一般这类题都是堆吧......(具体情况具体讨论)

code(没注释QwQ)

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iomanip>
#include<algorithm>
#include<ctime>
#include<queue>
#include<stack>
#include<vector>
#define rg register
#define il inline
#define lst long long
#define ldb long double
#define N 150050
using namespace std;
const int Inf=1e9; int n,ans;
struct HOUSE{
int fixt,badt;
bool operator<(rg HOUSE a)
{
return badt<a.badt;
}
}ljl[N];
priority_queue<int>Q; il int read()
{
rg int s=0,m=0;rg char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')m=1;ch=getchar();}
while(ch>='0'&&ch<='9')s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
return m?-s:s;
} int main()
{
n=read();
for(rg int i=1;i<=n;++i)
ljl[i]=(HOUSE){read(),read()};
rg int now=0;
sort(ljl+1,ljl+n+1);
for(rg int i=1;i<=n;++i)
{
if(now+ljl[i].fixt>ljl[i].badt)
{
if(!Q.empty())
if(ljl[i].fixt<Q.top())
{
now-=Q.top()-ljl[i].fixt;
Q.pop();
Q.push(ljl[i].fixt);
}
}
else
{
now+=ljl[i].fixt;
Q.push(ljl[i].fixt);
}
}
while(!Q.empty())ans++,Q.pop();
printf("%d\n",ans);
return 0;
}

最新文章

  1. 学习 opencv---(1) opencv3.1.0 组件结构浅析
  2. MXNET手写体识别的例子
  3. rownum和sum一起使用经验
  4. Java连接本地MySQL数据库进行增删改查操作
  5. [C#]循环输出 000 - 999999
  6. Cocoapods注意点
  7. 转载KMP
  8. Java:异常的处理
  9. 身份证上的X到底代表什么?
  10. jquery serialize()方法的扩展
  11. C++容器类的简介
  12. Android学习笔记(广播机制)
  13. Eclipse代理设置
  14. [Tree]Binary Tree Inorder Traversal
  15. Leetcode: Subsets &amp; SubsetsII
  16. Java加密与解密笔记(二) 对称加密
  17. Day6_正则表达式
  18. 今日bug:error: invalid array assignment
  19. 解决关于ios访问相机闪退问题
  20. 【原创 Hadoop&amp;Spark 动手实践 4】Hadoop2.7.3 YARN原理与动手实践

热门文章

  1. winsows CMD及Linux命令大全 欢迎补充
  2. debian系列systemd 配置nodejs服务
  3. 三条路线告诉你如何掌握Spring IoC容器的核心原理
  4. mysql 5.6 datetime default now()
  5. Linux命令行工具之vmstat命令
  6. UVA 11178 Morley&#39;s Theorem (计算几何)
  7. Flask学习笔记03之路由
  8. HashMap接口测试
  9. 阿里云祝顺民(江鹤):云原生SDWAN加速企业上云 引领未来智能网络
  10. 使用随机森林实现OSM路网城市多车道信息提取