博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P2278 操作系统
阅读量:5918 次
发布时间:2019-06-19

本文共 1450 字,大约阅读时间需要 4 分钟。

题目描述

写一个程序来模拟操作系统的进程调度。假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的。其中运行优先级用自然数表示,数字越大,则优先级越高。

如果一个进程到达的时候CPU是空闲的,则它会一直占用CPU直到该进程结束。除非在这个过程中,有一个比它优先级高的进程要运行。在这种情况下,这个新的(优先级更高的)进程会占用CPU,而老的只有等待。

如果一个进程到达时,CPU正在处理一个比它优先级高或优先级相同的进程,则这个(新到达的)进程必须等待。

一旦CPU空闲,如果此时有进程在等待,则选择优先级最高的先运行。如果有多个优先级最高的进程,则选择到达时间最早的。

输入输出格式

输入格式:

 

输入包含若干行,每一行有四个自然数(均不超过10^8),分别是进程号,到达时间,执行时间和优先级。不同进程有不同的编号,不会有两个相同优先级的进程同时到达。输入数据已经按到达时间从小到大排序。输入数据保证在任何时候,等待队列中的进程不超过15000个。

 

输出格式:

 

按照进程结束的时间输出每个进程的进程号和结束时间。

模拟,优先队列

 

#include 
#include
#include
#include
#include
#include
using namespace std;#define res register intstruct node{ int num,st,len,val; bool operator<(const node &n2) const { return val
n2.st;//´óµÄ»áÅÅÔÚÇ°Ãæ }};priority_queue
q;int tim,n;node c;inline int read(){ int x=0,f=1;char ch; while(!isdigit(ch=getchar())) if(ch=='-') f=-1; while(isdigit(ch)) x=x*10+ch-'0',ch=getchar(); return f*x;}int main(){ while(scanf("%d",&c.num)!=EOF) { c.st=read(); c.len=read(); c.val=read(); while(q.size() && q.top().len+tim <= c.st) { node tmp=q.top(); q.pop(); printf("%d %d\n",tmp.num,tmp.len+tim); tim+=tmp.len; } if(q.size()) { node t=q.top(); q.pop(); t.len=t.len+tim-c.st; q.push(t); } tim=c.st; q.push(c); } while(q.size()) { node t=q.top(); q.pop(); tim+=t.len; printf("%d %d\n",t.num,tim); } return 0;}

  

转载于:https://www.cnblogs.com/wmq12138/p/10507368.html

你可能感兴趣的文章
你用过Spring中哪些功能?
查看>>
『翻译』为什么.Net CF在调用HTTPS 的Web服务时失败?!
查看>>
PriorityQueue的Java实现
查看>>
PHP 跟老大的对话
查看>>
domino文件拆离数据库,放入指定目录
查看>>
windows下socket
查看>>
Read This Before Installing Rails 3.1
查看>>
在子MasterPage设置UserControl内的Web控件属性
查看>>
Thrift 基础
查看>>
深入云存储系统Swift核心组件:Ring实现原理剖析
查看>>
[转]Android动态加载jar/dex
查看>>
获取用户控件中控件的ID
查看>>
shell中特殊字符(串)
查看>>
使用数组实现队列----《数据结构与算法分析---C语言描述》
查看>>
14 nginx 中配置 expires缓存提升网站负载
查看>>
Clr静态数据Table-Valued函数
查看>>
HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID
查看>>
排序算法门外汉理解-Shell排序
查看>>
windows下nodejs express安装及入门网站,视频资料,开源项目介绍
查看>>
史上最全最强SpringMVC详细示例实战教程
查看>>