UVa 1422 - Processor
来源:互联网 发布:怪物猎人捏脸数据库 编辑:程序博客网 时间:2024/06/07 00:08
题目链接:UVa 1422 - Processor
优先队列 + 二分 + 贪心
两次应用贪心,第一次是对开始时间排序,然后枚举时间,任务开始时间小于当前枚举时间入优先队列,优先队列是按照结束时间越早优先级越高再次排序,这也是第二次贪心。当队列中的第一个元素的结束时间小于当前枚举时间的起始值时,返回0,表示这个速度不够大,需要继续二分增加速度,返回1,表示速度过大,继续二分减小速度。
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>using namespace std;const int maxn = 1e4+100;int n;int w[maxn];struct Mission{int l,r,w,i; bool operator < (const Mission &b) const{return r>b.r;}}p[maxn];bool cmp(Mission a,Mission b){if(a.l==b.l) return a.r<b.r;return a.l<b.l;}bool check(int mid){Mission f;int mtime = 0, i=0, tmid;priority_queue<Mission> Q;for(int i=0;i<n;i++){w[p[i].i] = p[i].w;}while(1){while(i<n&&p[i].l<=mtime) Q.push(p[i++]);tmid = mid;while(Q.size()&&tmid!=0){f = Q.top();if(mtime>=f.r) return 0;w[f.i] -=tmid;if(w[f.i]>0) tmid = 0;if(w[f.i]<=0){ tmid = -w[f.i]; Q.pop();}}if(i==n&&(Q.size()==0)) break;mtime++;}return 1;}int main(){int t;cin>>t;while(t--){cin>>n;for(int i=0;i<n;i++){ cin>>p[i].l>>p[i].r>>p[i].w;p[i].i = i; w[i] = p[i].w;}sort(p,p+n,cmp);int l = 1, r= 5000,mid;while(l<=r){mid = (l + r) / 2;if(check(mid)) r = mid-1;else l = mid + 1;}cout<<l<<endl;}return 0;}
0 0
- UVa:1422 Processor
- UVa 1422 - Processor
- uva-1422-Processor
- UVa 1422 Processor
- UVA - 1422 Processor
- uva 1422 - Processor(二分+优先队列)
- UVA 1422 - Processor (二分+贪心+优先队列)
- UVA 1422 (LA 4254)- Processor
- UVa 1422 - Processor 任务处理问题
- UVa 1422 Processor 解题报告(二分)
- UVA 1422 - Processor (二分+贪心+优先队列)
- UVA 1422 Processor(优先队列+贪心+二分)
- (intermediate) UVA 贪心+二分+优先队列 1422Processor
- UVa 1422 - Processor(二分 + 贪心 + 优先队列)
- UVA 1422 Processor(二分极大值极小化+优先队列)
- UVA 1422 - Processor(二分+优先队列+贪心)
- Java processor
- UVA1422 - Processor
- (Java实现)二叉查找树--查找、删除、插入
- Mac系统学习教程从0开始
- spinlock与linux内核调度的关系
- iOS 文件的读取和写入
- 游戏中的设计模式:工厂模式
- UVa 1422 - Processor
- 几种TCP连接中出现RST的情况
- io.write()和print()函数的区别
- 微信经典飞机大战之一:GameScene和GameLayer的关系
- 可以直接拿来用的jQuery代码片段
- 分类续
- 新浪微博架构和FEED架构分析--人人架构
- Java中使用二分法排序
- MapReduce,DataJoin,多表连接查询