【BZOJ1216】【HNOI2003】操作系统 双键值堆
来源:互联网 发布:c语言if多个语句嵌套 编辑:程序博客网 时间:2024/06/14 00:43
广告:
#include <stdio.h>int main(){ puts("转载请注明出处[vmurder]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/44499127");}
题解:
写个结构体,重载一下小于号,然后扔优先队列里玩。
每次进来新的任务就把这段时间分给队列里的任务修改一下,然后把新的任务入队。
水题就瞎说点什么吧。
代码:
#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define N 101000using namespace std;struct Eli{ int d,t,x,a; // 编号 入坑时间 处理时间 优先度 bool read(){return (scanf("%d%d%d%d",&d,&t,&x,&a)!=EOF);} Eli(int q=0,int r=0,int e=0,int w=0):d(q),t(r),x(e),a(w){} bool operator < (const Eli &A)const{return a==A.a?t>A.t:a<A.a;}}New,head;priority_queue<Eli>pq;int last,remain;int main(){ freopen("test.in","r",stdin); while(New.read()) { remain=New.t-last; while(!pq.empty()) { head=pq.top(),pq.pop(); if(head.x<=remain) { remain-=head.x; last+=head.x; printf("%d %d\n",head.d,last); } else { head.x-=remain; pq.push(head); last+=remain; remain=0; break; } } last+=remain; pq.push(New); } while(!pq.empty()) { head=pq.top(),pq.pop(); last+=head.x; printf("%d %d\n",head.d,last); } return 0;}
0 0
- 【BZOJ1216】【HNOI2003】操作系统 双键值堆
- 【bzoj1216】[HNOI2003]操作系统 堆+模拟
- bzoj1216 [HNOI2003]操作系统
- bzoj1216: [HNOI2003]操作系统
- 【BZOJ1216】操作系统(堆,模拟)
- 【Bzoj1216】操作系统
- bzoj1216(堆,呵呵的模拟)
- BZOJ1216
- 1216: [HNOI2003]操作系统
- 洛谷 P2278 [HNOI2003]操作系统
- 1216: [HNOI2003]操作系统
- bzoj 1216 [HNOI2003]操作系统
- 洛谷 P2278 [HNOI2003]操作系统
- BZOJ 1216: [HNOI2003]操作系统
- bzoj 1216: [HNOI2003]操作系统
- LUOGU P2278 [HNOI2003]操作系统
- [HNOI2003]操作系统(优先队列+模拟)
- 【BZOJ3889】【Usaco2015 Jan】Cow Routing 双键值最短路
- 手工创建Oracle遇到的几个错误及解决方案
- GeoServer发布wms服务--实验
- 给UltraEdit设置Verilog语法高亮
- Nginx Location配置总结
- 面向对象的基本概念(二)--UML.类之间的关系
- 【BZOJ1216】【HNOI2003】操作系统 双键值堆
- HDU-3768Shopping
- eclipse配色方案
- 1、java基础知识整理
- C++中数字与字符串之间的转换
- Linux查看硬盘型号
- 解决使用高版本Xcode打开StoryBoard后低版本Xcode打不开问题
- JQuery+ajax+jsonp 跨域访问
- maven创建struts项目