[HNOI2003]操作系统 优先队列用法
题:https://www.cometoj.com/problem/1046
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
int id,daoda,xiaohao,val;
bool operator<(const node &b)const{
if(val==b.val)
return daoda>b.daoda;
return val<b.val;
}
};
struct NODE{
int id,ti;
};
vector<NODE>ans;
priority_queue<node>que;
int main(){
node p;
int lasttime=;
while(~scanf("%d%d%d%d",&p.id,&p.daoda,&p.xiaohao,&p.val)){
if(que.empty()){
lasttime=p.daoda;
que.push(p);
continue;
}
//cout<<"!!!!"<<endl;
int sumti=p.daoda-lasttime;
int curti=lasttime;
node u;
NODE q;
while(!que.empty()&&sumti>=que.top().xiaohao){
u=que.top();
que.pop();
sumti-=u.xiaohao;
curti+=u.xiaohao;
q.id=u.id;
q.ti=curti;
ans.push_back(q);
}
if(!que.empty()&&sumti!=){
u=que.top();
que.pop();
u.xiaohao=max(,u.xiaohao-sumti);
curti+=u.xiaohao;
if(u.xiaohao>)
que.push(u);
else{
q.id=u.id;
q.ti=curti;
ans.push_back(q);
}
}
que.push(p);
lasttime=p.daoda;
}
while(!que.empty()){
//cout<<"!!"<<endl;
node u=que.top();
que.pop();
NODE q;
q.id=u.id;
q.ti=lasttime+u.xiaohao;
ans.push_back(q);
lasttime+=u.xiaohao;
}
for(int i=;i<ans.size();i++){
printf("%d %d\n",ans[i].id,ans[i].ti);
}
return ;
}
[HNOI2003]操作系统 优先队列用法的更多相关文章
- BZOJ 1216: [HNOI2003]操作系统( 优先队列 )
按题意用priority_queue模拟即可 ---------------------------------------------------------------------- #inclu ...
- 【BZOJ 1216】 1216: [HNOI2003]操作系统 (模拟+优先队列)
1216: [HNOI2003]操作系统 Description 写一个程序来模拟操作系统的进程调度.假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的.其中运行优先级用自 ...
- bzoj1216 [HNOI2003]操作系统
1216: [HNOI2003]操作系统 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 751 Solved: 419[Submit][Status ...
- BZOJ1216[HNOI2003]操作系统 [模拟 优选队列]
1216: [HNOI2003]操作系统 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 754 Solved: 421[Submit][Status ...
- bzoj1216 操作系统(优先队列模拟)
1216: [HNOI2003]操作系统 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1172 Solved: 649[Submit][Statu ...
- [Luogu P2278] [HNOI2003]操作系统
题面 传送门:https://www.luogu.org/problemnew/show/P2278 Solutiton 挺简单的一道模拟题,拿堆模拟一下题目意思就好 堆中有两个关键字,分别是优先级和 ...
- [HNOI2003]操作系统(优先队列,堆排序)
题目描述 写一个程序来模拟操作系统的进程调度.假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的.其中运行优先级用自然数表示,数字越大,则优先级越高. 如果一个进程到达的时 ...
- Luogu P2278 [HNOI2003]操作系统【优先队列/重载运算符/模拟】 By cellur925
题目传送门 本来是照着二叉堆的题去做的...没想到捡了个模拟...不过模拟我都不会...我好弱啊... 其实核心代码并不长,比辰哥的标程短到不知哪里去...但是思路需要清晰. 读题的时候我明白,当有优 ...
- PriorityQueue优先队列用法入门
PriorityQueue是队列的一种,它叫做优先队列,该类实现了Queue接口. 之所以叫做优先队列,是因为PriorityQueue实现了Comparator这个比较接口,也就是PriorityQ ...
随机推荐
- 在h5页面上添加音乐播放
接到需求说要做一个h5轮播图,同时配上背景音乐. Html部分: <!--音乐开始--> <div id="music"> <div id=" ...
- tensorflow---darknet53
#! /usr/bin/env python# coding=utf-8#=============================================================== ...
- (day 1)创建项目--3【创建应用】
创建步骤 1.打开命令行,进入项目中manage.py的同级目录 2.在命令行输入 python manage.py startapp blog 3.添加应用名到settings.py的INSTALL ...
- 80.常用的返回QuerySet对象的方法使用详解:order_by
order_by: 将模型生成的表按照某个字段进行排序,默认情况下,按照升序的顺序排序,如果想要按照降序的顺序排序可以在字段的前面加一个"-",加一个负号就可以进行反转. mode ...
- 步进电机加减速S曲线算法
一.Sigmoid 函数 1.1 Sigmoid函数原型 1.2 sigmoid函数波形: 由图形可看出在-10时已经接近于0,一般取值区间在[-5,5]. 1.3 sigmoid函数的导数 转载CS ...
- 寒假day16
今天优化了管理员界面,人才标签模块遇到了一点问题,部分结果无法显示,正在寻找原因
- android 根据距离区分 点击跟滑动事件
public void onClick(View v) { if (isclick) Log.i(TAG, "onclick"); } }); } float distance = ...
- C#——反射,自动生成添加的SQL语句
C#中的反射.是C#中特别重要也是特别神奇的特性,对后面学习框架,了解框架的原理.以及自己写框架,都是必不可少的.学习反射的过程中.总给我一种茅塞顿开的感觉,以前不懂的,现在懂了 反射的介绍:http ...
- mysql my.cnf常用的配置
[mysqld]basedir = /usr/local/mysql/datadir = /usr/local/mysql/dataport = 3306pid-file = /usr/local/m ...
- c语言的各种技巧
一.参考网址 1.参考网址1:C 语言的奇技淫巧 二.