bzoj 1216 [HNOI2003]操作系统
来源:互联网 发布:百度网盘引擎源码 编辑:程序博客网 时间:2024/06/05 17:15
一开始想的用heap维护一下,但是发现输出不好搞,而且维护两个值的heap好像不怎么会做,然后学习了一发优先队列,挺好用的,直接模拟就好了,用优先队列维护一下优先级和到达时间就好了。
#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<queue>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;struct node{ int num,kth,arr,tex; bool operator < (const node &a)const { return (kth<a.kth||(kth==a.kth&&arr>a.arr)); }};priority_queue<node>q;int t,a,b,c,d;inline void add(int a,int b,int c,int d){ node x; x.num=a; x.arr=b; x.tex=c; x.kth=d; q.push(x);}int main(){ scanf("%d%d%d%d",&a,&b,&c,&d); add(a,b,c,d); t=b; while (scanf("%d%d%d%d",&a,&b,&c,&d)==4) { node x=q.top(); q.pop(); int v=x.tex; bool flag=0; while (t+v<=b) { printf("%d %d\n",x.num,t+v); t+=v; if (q.empty()) { t=b; flag=1; break; } x=q.top(); q.pop(); v=x.tex; } add(a,b,c,d); if (flag)continue; x.tex-=(b-t); q.push(x); t+=(b-t); } while (!q.empty()) { node x=q.top(); q.pop(); int v=x.tex; printf("%d %d\n",x.num,t+v); t+=v; } return 0;}
0 0
- bzoj 1216 [HNOI2003]操作系统
- BZOJ 1216: [HNOI2003]操作系统
- bzoj 1216: [HNOI2003]操作系统
- 1216: [HNOI2003]操作系统
- 1216: [HNOI2003]操作系统
- 洛谷 P2278 [HNOI2003]操作系统
- bzoj1216 [HNOI2003]操作系统
- bzoj1216: [HNOI2003]操作系统
- 洛谷 P2278 [HNOI2003]操作系统
- LUOGU P2278 [HNOI2003]操作系统
- 【BZOJ 1218】 [HNOI2003]激光炸弹
- bzoj 1218 [HNOI2003]激光炸弹
- 【bzoj 1218】 [HNOI2003]激光炸弹
- 【bzoj1216】[HNOI2003]操作系统 堆+模拟
- BZOJ 1218 HNOI2003 激光炸弹 暴力
- BZOJ系列《[HNOI2003]激光炸弹》题解
- 【bzoj 1217】[HNOI2003]消防局的设立 贪心
- BZOJ 1217: [HNOI2003]消防局的设立 贪心
- 资源收集
- 堆的相关操作
- HDFS-Hadoop分布式文件系统介绍
- Oracle导入导出数据库(含远程导入导出数据库)
- java synchronized类锁,对象锁详解
- bzoj 1216 [HNOI2003]操作系统
- zabbix3.2 httpd页面500错误
- 最近公共父节点
- android setResut intent ==null?
- MYSQL 乱码
- 《开发自己的搜索引擎》读书笔记——Lucene的分析器
- 【LeetCode】{Reverse Words in a String} 单词间只留一个空格
- GCC命令和帮助文档
- MongoDB CURD练习