P2278-[HNOI2003]操作系统【堆】

正题

题目链接:
https://www.luogu.org/problemnew/show/P2278


题意

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

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

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


解题思路

维护一个堆,然后在放入程序时做处理:
如果可以运行完当前程序就运行,之后就打断当前运行程序。
所有程序插入完之后,按顺序模拟就好了。


代码

#include<cstdio>
#include<algorithm>
using namespace std;
struct exe{int number,ans,longs,rtime;
}a[15001],k[15001];
int num,n,now,tot,nn,rt,ls,an;
void up1(int x)
{while (x>1 && (a[x/2].ans<a[x].ans || a[x/2].ans==a[x].ans && a[x/2].rtime>a[x].rtime)){swap(a[x/2],a[x]);x/=2;}
}//维护
void down1(int x)
{int y;while (x*2<=num && (a[x*2].ans>a[x].ans || a[x*2].ans==a[x].ans && a[x*2].rtime<a[x].rtime) || x*2+1<=num && (a[x*2+1].ans>a[x].ans || a[x*2+1].ans==a[x].ans && a[x*2+1].rtime<a[x].rtime)){y=x*2;if (y+1<=num && (a[y].ans<a[y+1].ans || a[y].ans==a[y+1].ans && a[y].rtime>a[y+1].rtime)) y++;swap(a[y],a[x]);x=y;}
}//维护
int main()
{//freopen("data.in","r",stdin);//freopen("data.out","w",stdout);tot=0;num=0;while (scanf("%d%d%d%d",&nn,&rt,&ls,&an)==4){while (num&&a[1].longs<=rt-now)//运行完可以运行完的程序{printf("%d %d\n",a[1].number,now+a[1].longs);now+=a[1].longs;swap(a[1],a[num]);num--;down1(1);}if (num>0 && rt-now>0)//打断a[1].longs-=rt-now;a[++num].ans=an;a[num].number=nn;//放入CPUa[num].rtime=rt;a[num].longs=ls;up1(num);now=rt;}while (num)//模拟剩下的{printf("%d %d\n",a[1].number,now+a[1].longs);now+=a[1].longs;swap(a[1],a[num]);num--;down1(1);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

属性编辑器未在PropertyEditorManager中注册?

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号【雄雄的小课堂】。前言好不容易将代码都写完了&#xff0c;结果一运行&#xff0c;报错&#xff01;&#xff01;HTTP Status 500 - Unable to convert string "${book.btime}" to class "java.util.…

DDD理论学习系列(13)-- 模块

1. 引言 Module&#xff0c;即模块&#xff0c;是指提供特定功能的相对独立的单元。提到模块&#xff0c;你肯定就会想到模块化设计思想&#xff0c;也就是功能的分解和组合。对于简单问题&#xff0c;可以直接构建单一模块的程序。而对于复杂问题&#xff0c;则可以先创建若干…

POJ2352-Stars【树状数组】

正题 题目链接: http://poj.org/problem?id2352 题意 有n个坐标不同的星星&#xff0c;一个星星的等级等于在它左下的所有星星数量&#xff0c;求各个等级的星星数。 注&#xff1a;输入顺序保证Y坐标是升序&#xff0c;Y坐标相同的情况下X坐标也是升序的。 解题思路 用树…

html的<input type='radio'/>change事件坑

一、坑复现 <div><input typeradio nametest value1 checked/>1<span idtest_a>a test </span ></div> <div><input typeradio nametest value2/>2<span idtest_b>b test </span ></div> $(name"test"…

快速搭建Springboot项目的两种方式!!

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号【雄雄的小课堂】。前言Springboot的特点就是简单、快速和方便&#xff0c;使用idea不到一分钟就可以快速搭建springboot项目&#xff0c;并且&#xff0c;在这里&#xff0c;你不用写spring的那些乱七八糟的xml文件&…

简化springboot部署,太灵活方便了!

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号【雄雄的小课堂】。前言Springboot项目的编写与开发想必大家都会了&#xff0c;是不是和我们之前的项目比起来&#xff0c;简单方便了许多&#xff1f;今天&#xff0c;我们来看看除了可以直接在idea中部署和运行项目…

POJ2481-Cows【树状数组】

正题 题目链接: http://poj.org/problem?id2481 题目大意 给出若干个区间[Si,Ei]&#xff0c;定义一个区间比另一个区间“strong”当且仅当Si<Sj and Ei>Ej and Ei-Si>Ej-Sj。输出对于每一个区间&#xff0c;有多少个区间比它strong。区间最多100000个&#xff0c…

html数据复制到剪切板

一、原生js指令复制 function copyUtil(info) {var $textArea $(<textarea></textarea>);$textArea.val(info);$textArea.css(opacity,0);$(body).append($textArea);$textArea.select();//通过执行copy指令将选中的信息复制到剪切板var status document.execCo…

月旦评 之 DevOps招贤令

公元164-182年间&#xff0c;汝南平舆的许氏兄弟于每月初一品评人物&#xff0c;褒贬时政&#xff0c;被称为“月旦评”。所谓“子治世之能臣&#xff0c;乱世之奸雄也”这句许邵评价曹操的话也是来自于“月旦评”&#xff1b;《军事联盟》中杨修与司马懿的唇枪舌剑的精彩场景相…

springboot中配置mybatis别名该怎么写?

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号【雄雄的小课堂】。今天给大家分享的是&#xff0c;在springboot配置文件中&#xff0c;如何给mybatis实体类起别名。在以前&#xff0c;我们写mybatis的时候&#xff0c;有一个文件为mybatis-config.xml&#xff0c;…

P3321-Apple Tree【树状数组】

正题 题意 有一颗树&#xff0c;开始每个点的值都是1&#xff0c;有两种操作&#xff1a; 1.将一个点的值取反 2.询问一个子树的值的和 解题思路 用后续遍历就可以做到用一个区间代表一棵子树。然后用线段树就好了。 代码 #include<cstdio> using namespace std; st…

Redola.Rpc 集成 Consul 服务发现

Redola.Rpc 解决了什么问题&#xff1f; Redola.Rpc 是一个使用 C# 开发的 RPC 框架&#xff0c;代码开源在 GitHub 上。目前版本仅支持 .NET Framework 4.6 以上版本&#xff0c;未来待系统稳健后再考虑移植 .NET Standard 和 .NET Core。 Redola.Rpc 在 0.3.2 版本中&#…

springboot+springm vc+mybatis实现增删改查案例!

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号【雄雄的小课堂】。前言最近这几天都在看关于springboot的内容&#xff0c;每天新会获得点新收获&#xff0c;并且都总结发在公众号中&#xff1b;最后经过不懈努力&#xff0c;不断查找相关网页&#xff0c;解决各种…

【2018.5.12】模拟赛之一-ssl2413 排名【玄学】

正题 题目大意 就是给出4科排名&#xff0c;然后求两科的排名&#xff0c;按其中一科排名输出。 解题思路 水题不解释 代码 #include<cstdio> #include<algorithm> using namespace std; struct node{int c,m,e,x,ms; }a[46]; int n; bool cmp(node x,node y) {…

<table/>默认适应内容宽度造成滚动条不显示的解决方法

一、现象重现 <html><head></head><body> <table style"width: 100%;"> <tbody> <tr> <td style"width: 50%;overflow-x:auto"> <pre> 瞎子打灯笼一个盲人到亲戚家做客&#xff0c;天黑后&#xf…