Luogu P2278 [HNOI2003]操作系统【优先队列/重载运算符/模拟】 By cellur925
本来是照着二叉堆的题去做的...没想到捡了个模拟...不过模拟我都不会...我好弱啊...
其实核心代码并不长,比辰哥的标程短到不知哪里去..。但是思路需要清晰。
读题的时候我明白,当有优先级高的任务来时,要把原先的任务用时减去当前已做的,再把它插进堆。
难点是更新当前的时间,以及让程序循环起来而不陷入死循环。
Code
#include<cstdio>
#include<algorithm>
#include<queue> using namespace std; int a,b,c,d,n,pos;
struct cellur{
int id,opt,len;
}item[];
priority_queue<cellur>q;
bool operator < (const cellur &x,const cellur &y)
{
if(x.opt==y.opt) return x.id>y.id;
return x.opt<y.opt;
} int main()
{
freopen("1.in","r",stdin);
while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF)
{
while(!q.empty())
{
cellur x=q.top();q.pop();
if(pos+x.len<=b)//新任务来前能做完当前任务
{
pos+=x.len;
printf("%d %d\n",x.id,pos);
//表示堆顶任务完成了 输出
}
else
{
x.len-=b-pos;
q.push(x);
break;
//原进程被打断
}
}
q.push((cellur){a,d,c});
pos=b;//这样更新时间
}
while(!q.empty())//把堆中元素干掉
{
cellur x=q.top();q.pop();
pos+=x.len;
printf("%d %d\n",x.id,pos);
}
return ;
}
*下次再做比较复杂的模拟,可以不非要从第一种模拟,先模拟普适情况,再回来补充,这样思维会容易。
我太菜了嘤嘤嘤
Luogu P2278 [HNOI2003]操作系统【优先队列/重载运算符/模拟】 By cellur925的更多相关文章
- [Luogu P2278] [HNOI2003]操作系统
题面 传送门:https://www.luogu.org/problemnew/show/P2278 Solutiton 挺简单的一道模拟题,拿堆模拟一下题目意思就好 堆中有两个关键字,分别是优先级和 ...
- 优先队列重载运算符< 以及初始化列表
优先队列定义 priority_queue<int, vector<int>, greater<int> >pq; 优先队列重载<运算符 在结构体中定义一个 ...
- BZOJ 1216: [HNOI2003]操作系统( 优先队列 )
按题意用priority_queue模拟即可 ---------------------------------------------------------------------- #inclu ...
- P2278 [HNOI2003]操作系统
题目描述 写一个程序来模拟操作系统的进程调度.假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的.其中运行优先级用自然数表示,数字越大,则优先级越高. 如果一个进程到达的时 ...
- 洛谷P2278 [HNOI2003] 操作系统
题目传送门 分析:题目中提到了优先级,很显然这题要用优先队列+模拟.题目中很多细节需要注意,还是在代码中解释吧,这里我用的是手打的堆. Code: #include<bits/stdc++.h& ...
- 优先队列重载<运算符
https://vjudge.net/problem/POJ-3190 #include<iostream> #include<cstdio> #include<queu ...
- 洛谷 P2278 [HNOI2003]操作系统
题目传送门 解题思路: 一道没啥思维含量的模拟题,但是个人感觉代码实现不简单,可能是我太弱了,花了我6个小时,3次重写. AC代码: #include<iostream> #include ...
- [HNOI2003]操作系统 优先队列用法
题:https://www.cometoj.com/problem/1046 #include<bits/stdc++.h> using namespace std; typedef lo ...
- 【BZOJ 1216】 1216: [HNOI2003]操作系统 (模拟+优先队列)
1216: [HNOI2003]操作系统 Description 写一个程序来模拟操作系统的进程调度.假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的.其中运行优先级用自 ...
随机推荐
- 8. Smarty3:模版中的内置函数
smarty3中对内置函数的修改比較大,加入了很多新的功能:变量声明.表达式,流程控制,函数.数组等.可是建议不要在模版中去使用过于复杂的逻辑,而是要尽量将一些程序设计逻辑写到PHP中,并在模版中採用 ...
- HTML制作练习
- 【转载】读懂IL代码就这么简单(二)
一 前言 IL系列 第一篇写完后 得到高人指点,及时更正了文章中的错误,也使得我写这篇文章时更加谨慎,自己在了解相关知识点时,也更为细致.个人觉得既然做为文章写出来,就一定要保证比较高的质量,和正确率 ...
- android笔记5——同一个Activity中Fragment的切换
今天来模拟一个注冊的界面过程: 点击"下一步"之后: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZW5zb24xNjg1NQ==/f ...
- ActiveMQ(一) 转
package pfs.y2017.m11.mq.activemq.demo01; import javax.jms.Connection; import javax.jms.DeliveryMode ...
- HashTable源代码剖析
<span style="font-size:14px;font-weight: normal;">public class Hashtable<K,V> ...
- MVC框架的优缺点
MVC框架的优缺点 解析:M(Model)-模型,V(View)-视图.C(Controller)-控制器 作用:M-处理应用程序数据部分,V-处理数据展示的部分.C-处理用户交互,逻辑功能实现 1. ...
- Spring Boot与Micronaut性能比较
文章转载出处:微信公众号——锅外的大佬 链接:https://mp.weixin.qq.com/s/MdBByJ0ju-rROKg7jsWygA 今天我们将比较两个在JVM上构建微服务的框架:Spri ...
- 对交换机VLAN及各种端口类型的理解
每学习一种技术时,我们往往需要去了解why,即这个技术是为解决什么问题而出现的. VLAN全称为Virtual Local Area Network,即虚拟局域网,是逻辑上的一种划分.一般来说,如果交 ...
- 多媒体开发之---h264快速运动估计算法
#include "stdio.h"#include "stdlib.h"#include "malloc.h"#include " ...