[Luogu P2278] [HNOI2003]操作系统
题面
传送门:https://www.luogu.org/problemnew/show/P2278
Solutiton
挺简单的一道模拟题,拿堆模拟一下题目意思就好
堆中有两个关键字,分别是优先级和到达时间
还要维护一下每个任务剩余时间(还有多久完成)
因为堆不能直接改.得在堆里记录编号然后映射出来
这里总结一下要注意的细节:
1.在下一个任务到达之前,尽可能把CPU内的任务完成了
2.注意读入
3.注意注释文件读写233(我因为这破事爆零一次)
4.没了
好像不需要记录到达时间,编号即为到达时间先后
但懒得改了
Code
//Luogu P2278 [HNOI2003]操作系统
//May,4th,2018
//堆+模拟
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
const int N=1000000;
int t[N];
struct op
{
int a,no,at;
friend bool operator < (op A,op B)
{
if(A.a==B.a)
return A.at > B.at;
return A.a < B.a;
}
};
priority_queue <op,vector<op> > d;
int main()
{
//freopen("system.in","r",stdin);
int no,at,T,a,t_now=0;
while(scanf("%d%d%d%d",&no,&at,&T,&a)==4)
{
while(d.empty()==false)
{
op now=d.top();
if(t[now.no]<=at-t_now)
{
d.pop();
t_now+=t[now.no];
printf("%d %d\n",now.no,t_now);
}
else
{
t[now.no]-=at-t_now;
break;
}
}
op temp;
temp.no=no,temp.a=a,temp.at=at,t[no]=T;
d.push(temp);
t_now=at;
} while(d.empty()==false)
{
op now=d.top();
d.pop();
t_now+=t[now.no];
printf("%d %d\n",now.no,t_now);
}
return 0;
}
[Luogu P2278] [HNOI2003]操作系统的更多相关文章
- Luogu P2278 [HNOI2003]操作系统【优先队列/重载运算符/模拟】 By cellur925
题目传送门 本来是照着二叉堆的题去做的...没想到捡了个模拟...不过模拟我都不会...我好弱啊... 其实核心代码并不长,比辰哥的标程短到不知哪里去...但是思路需要清晰. 读题的时候我明白,当有优 ...
- P2278 [HNOI2003]操作系统
题目描述 写一个程序来模拟操作系统的进程调度.假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的.其中运行优先级用自然数表示,数字越大,则优先级越高. 如果一个进程到达的时 ...
- 洛谷P2278 [HNOI2003] 操作系统
题目传送门 分析:题目中提到了优先级,很显然这题要用优先队列+模拟.题目中很多细节需要注意,还是在代码中解释吧,这里我用的是手打的堆. Code: #include<bits/stdc++.h& ...
- 洛谷 P2278 [HNOI2003]操作系统
题目传送门 解题思路: 一道没啥思维含量的模拟题,但是个人感觉代码实现不简单,可能是我太弱了,花了我6个小时,3次重写. AC代码: #include<iostream> #include ...
- BZOJ1216[HNOI2003]操作系统 [模拟 优选队列]
1216: [HNOI2003]操作系统 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 754 Solved: 421[Submit][Status ...
- bzoj1216 [HNOI2003]操作系统
1216: [HNOI2003]操作系统 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 751 Solved: 419[Submit][Status ...
- BZOJ 1216: [HNOI2003]操作系统( 优先队列 )
按题意用priority_queue模拟即可 ---------------------------------------------------------------------- #inclu ...
- 【BZOJ 1216】 1216: [HNOI2003]操作系统 (模拟+优先队列)
1216: [HNOI2003]操作系统 Description 写一个程序来模拟操作系统的进程调度.假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的.其中运行优先级用自 ...
- [luogu]P2279 [HNOI2003]消防局的设立[贪心]
[luogu]P2279 [HNOI2003]消防局的设立 题目描述 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两 ...
随机推荐
- 【CF1425A】 Arena of Greed题解
原题链接 简要翻译: Mr.Chanek与另一个人玩一个取硬币游戏,他先手.玩家在自己的回合内可以取走硬币堆中的一个.如果硬币堆里有偶数个硬币,玩家也可以选择取走硬币总数的一半.两名玩家都是绝对聪明的 ...
- Centos-检查文件系统并尝试修复-fsck
fsck 检查文件系统并尝试修改错误,修复对象为设备,本质上是调用 /sbin/fsck.filesystemName 命令, filesystemName是指定设备的文件系统类型,如图分区中有文件丢 ...
- Python self用法详解
在定义类的过程中,无论是显式创建类的构造方法,还是向类中添加实例方法,都要求将 self 参数作为方法的第一个参数.例如,定义一个 Person 类: class Person: def __init ...
- C# Redis分布式锁 - 单节点
为什么要用分布式锁? 先上一张截图,这是在浏览别人的博客时看到的. 在了解为什么要用分布式锁之前,我们应该知道到底什么是分布式锁. 锁按照不同的维度,有多种分类.比如 1.悲观锁,乐观锁; 2.公平锁 ...
- 090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 04 使用包进行类管理(2)——导入包
090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- matlab中的qr函数
转自:https://blog.csdn.net/qq278672818/article/details/62038630 实数矩阵A的QR分解是把A分解为 A = QR 这里的Q是正交矩阵(意味着Q ...
- uint16_t
转自:https://blog.csdn.net/kiddy19850221/article/details/6655066 uint8_t / uint16_t / uint32_t /uint64 ...
- JavaFX ComboBox的选中事项
参考1:https://blog.csdn.net/mexel310/article/details/37909205 参考2:https://blog.csdn.net/maosijunzi/art ...
- Mac Idea你不知道的秘密
导读 工欲善其事必先利其器,日常工作中,知道这些Idea技巧,可以极大提高日常开发效率. 技巧篇 以下内容不分先后顺序 显示类中的方法 搜索 搜索方法,按两下shift 文字搜索,control+sh ...
- docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
故障描述: [root@docker01 ~]# docker run centos docker: Error response from daemon: Get https://registry- ...