BZOJ1029
来源:互联网 发布:csp绘画软件百度云 编辑:程序博客网 时间:2024/06/02 23:10
传送门:BZOJ1029
还记得线段覆盖吗?
我们将建筑物按Deadline排序,然后扫描排序后数组,如果当前建筑物可以被修建,则修建,否则,如果当前建筑物所用时间小于修过的建筑物最大时间,则放弃最大时间,改修它。
这个算法的正确性是显然的。
代码上的小细节见下:
#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <algorithm>#include <iostream>#include <queue>using namespace std;struct Node{ int Needtime; int Deadline; bool operator <(const Node& a)const{ return Deadline<a.Deadline; }};Node da[150005];int n;priority_queue<int> Q;void Readdata(){ freopen("loli.in","r",stdin); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d%d",&da[i].Needtime,&da[i].Deadline);}void Solve(){ sort(da+1,da+1+n); int used=0;Q.push(0); for(int i=1;i<=n;i++) if(used+da[i].Needtime<=da[i].Deadline){ Q.push(da[i].Needtime); used+=da[i].Needtime; } else if(da[i].Needtime<Q.top()){ used+=(da[i].Needtime-Q.top()); Q.pop(); Q.push(da[i].Needtime); } printf("%d",Q.size()-1);}void Close(){ fclose(stdin); fclose(stdout);}int main(){ Readdata(); Solve(); Close(); return 0;}
1 1
- BZOJ1029
- bzoj1029
- bzoj1029: [JSOI2007]建筑抢修
- BZOJ1029: [JSOI2007]建筑抢修
- BZOJ1029建筑抢修
- [BZOJ1029][JSOI2007]建筑抢修
- BZOJ1029 [JSOI2007]建筑抢修
- 【bzoj1029】[JSOI2007]建筑抢修
- [bzoj1029] 建筑抢修
- bzoj1029 [JSOI2007]建筑抢修
- bzoj1029: [JSOI2007]建筑抢修
- BZOJ1029: [JSOI2007]建筑抢修
- bzoj1029: [JSOI2007]建筑抢修
- 【Bzoj1029】建筑抢修
- 【bzoj1029】[JSOI2007]建筑抢修
- bzoj1029 [JSOI2007]建筑抢修
- bzoj1029 [JSOI2007]建筑抢修
- bzoj1029: [JSOI2007]建筑抢修
- 以沟通为中心,坚持简明清晰的表达方式和开明的领导风格
- 银子价格
- 串口入门知识及总结
- 说起仙人掌,相信你一定不会觉得陌生
- js的隐含参数(arguments,callee,caller)使用方法
- BZOJ1029
- OC 随机数的生成
- 然而,更让我震撼的是发生在暑假里的一件事。
- nginx的root和alias指令的区别
- UVA 624 CD (DP)
- block详解
- HDU 1014 Uniform Generator
- ie自带打印
- UVA 10954