Processor(二分搜索,优先队列)
来源:互联网 发布:一级域名 二级域名 编辑:程序博客网 时间:2024/04/26 17:19
题意:
给出n个任务完成区间以及工作量,求出最快处理速度.
思路:
用二分搜索匹配最优速度,其中还用到优先队列辅助.
枚举所有截止时间,在此时间内的都进队,按照工作截止时间越早越先出队,如果截止时间不及枚举的截止时间,则错过
代码:
#include<cstdio>#include<queue>#include<iostream>#include<string>#include<algorithm>using namespace std;const int N = 10005;int n;struct Work {double r, d, w;bool operator < (const Work& a)const {return d>a.d;//工作按照结束时间在队内调整}}work[N];bool cmp(Work a, Work b) {return a.r < b.r;}void init() {scanf("%d", &n);for(int i=0; i<n; i++) scanf("%lf%lf%lf", &work[i].r, &work[i].d, &work[i].w);sort(work, work+n, cmp);//工作按照起始时间进队}bool judge(int m) {priority_queue<Work> qu;int wn = 0;for(int i=1; i<=20000; i++) {int sum = m;while(work[wn].r<i && wn<n) qu.push(work[wn++]);while(!qu.empty() && sum) {//每秒内工作量没用完而且还有工作没完成.Work tmp = qu.top();qu.pop();if(tmp.d < i) return false;//作业已错过if(sum >= tmp.w) sum -= tmp.w;else {tmp.w -= sum;qu.push(tmp);sum = 0;}}if(qu.empty() && wn == n) return true;}return false;}int deal() {int l=0, r=5000, mid;while(l<=r) {mid = (l+r)/2;if(judge(mid)) r = mid-1;else l = mid+1;}return l;}int main() {int kase;scanf("%d", &kase);while(kase--) {init();printf("%d\n", deal());}return 0;}
0 0
- Processor(二分搜索,优先队列)
- uva1422 - Processor 二分+优先队列
- uva 1422 - Processor(二分+优先队列)
- UVA 1422 - Processor (二分+贪心+优先队列)
- LA 4254 Processor(二分+贪心+优先队列)
- UVA 1422 - Processor (二分+贪心+优先队列)
- UVALive - 4254 Processor 二分+优先队列
- UVA 1422 Processor(优先队列+贪心+二分)
- (intermediate) UVA 贪心+二分+优先队列 1422Processor
- UVa 1422 - Processor(二分 + 贪心 + 优先队列)
- UVA 1422 Processor(二分极大值极小化+优先队列)
- UVA 1422 - Processor(二分+优先队列+贪心)
- 二分搜索树,堆,及优先队列
- UVA1422-Processor(二分法+优先队列)
- UvaLive 4254 Processor 优先队列
- LA 4254 Processor (单调队列 + 二分)
- POJ3635-搜索,优先队列
- UVa10603_Fill(优先队列搜索)
- 一个Java NIO问题引发的思考
- 关于淘点点面试中碰到的架构问题
- 无法打开MongoDB 28017监控页面
- mysql or查询优化
- IIS 静态网站跨域(CORS)
- Processor(二分搜索,优先队列)
- Android 内存泄漏总结
- memcache缓冲雪崩现象
- Android启动流程
- 简单的windows批处理文件启动/停止VMware相关服务
- 分布式 java后台框架 springmvc整合mybatis框架源码
- 体验 Java 并发 api,用不同方式实现信号量锁(Semaphore)(3)
- QT 5 初学2 视窗设计(续)
- 如何学习 Android Animation?