题面

一道模拟题,模拟CPU的处理过程?!省选模拟题

思路:

模拟退火大法+优先队列乱搞

要注意的点

1、空闲时,CPU要处理进程

2、当队列中没有进程时,要先进行判断,然后访问

3、当优先级高的进程替换掉原进程时,原进程已经处理过的时间要减去

4、结束进程时要更新后面进程的时间

既然是模拟题,那就不讲具体了h^ovny:我懒

Code:

#include<bits/stdc++.h>
using namespace std;
struct node{
int i,S,l,p;
node(int a,int b,int c,int d):i(a),S(b),l(c),p(d){ }
node(){ }
bool operator<(const node X) const{//重载
if(p!=X.p)
return p<X.p;
return S>X.S;
}
}Now,cur;//Now表示当前处理的进程
int i,S,l,p;
priority_queue<node>P;
int main()
{
int i;
scanf("%d%d%d%d",&i,&S,&l,&p);//预先读入一组
Now=node(i,S,l,p);
while(~scanf("%d%d%d%d",&i,&S,&l,&p))
{
while(Now.S+Now.l<=S&&!P.empty())//中间空闲时间先处理掉
{
printf("%d %d\n",Now.i,Now.S+Now.l);
cur=P.top();P.pop();
if(cur.S<Now.S+Now.l)//计算影响
cur.l+=Now.S+Now.l-cur.S;
Now=cur;
}
if(Now.S+Now.l<=S)//如果队列空了,Now就没有输出
{
printf("%d %d\n",Now.i,Now.S+Now.l);
Now=node(i,S,l,p);
continue;
}
if(p>Now.p)//更高级的任务
{
Now.l=Now.l+Now.S-S;
P.push(Now);
Now=node(i,S,l,p);
continue;
}
P.push(node(i,S,l,p));
}
printf("%d %d\n",Now.i,Now.S+Now.l);//队列中还有进程,但Now无法被更新
while(!P.empty())//弹出队列中的进程
{
cur=P.top();P.pop();
if(cur.S<Now.S+Now.l)//前面进程对当前的影响
cur.l+=Now.l+Now.S-cur.S;
printf("%d %d\n",cur.i,cur.S+cur.l);
Now=cur;
}
return 0;
}

「Luogu P2278」[HNOI2003]操作系统 解题报告的更多相关文章

  1. 「Luogu P2201」数列编辑器 解题报告

    数列编辑器,在线IDE 本期的主题是洛谷的在线IDE 小学生?!小学生虐我

  2. 「Luogu P3183」[HAOI2016]食物链 解题报告

    身为一个蒟蒻,由于刷不过[NOI2001]食物链 于是出门左转写了道另一道假的食物链 戳这里 这里的食物链个条数其实就是有向图的路径数(应该是这么说吧,我弱) 思路: 拓扑(Topulogy)(一本正 ...

  3. 「THUSCH 2017」大魔法师 解题报告

    「THUSCH 2017」大魔法师 狗体面太长,帖链接了 思路,维护一个\(1\times 4\)的答案向量表示\(A,B,C,len\),最后一个表示线段树上区间长度,然后每次的操作都有一个转移矩阵 ...

  4. 「CTS2019 | CTSC2019」随机立方体 解题报告

    「CTS2019 | CTSC2019」随机立方体 据说这是签到题,但是我计数学的实在有点差,这里认真说一说. 我们先考虑一些事实 如果我们在位置\((x_0,y_0,z_0)\)钦定了一个极大数\( ...

  5. 「BZOJ4510」「Usaco2016 Jan」Radio Contact 解题报告

    无线电联系 Radio Contact 题目描述 Farmer John has lost his favorite cow bell, and Bessie the cow has agreed t ...

  6. 「Luogu P3866」[TJOI2009]战争游戏 解题报告

    题面 好难表述啊~ 在n*m的矩阵上,有一些大兵(为0),一些空地(一个正整数),障碍物(-1),现在摧毁一些空地,使所有大兵不能走出矩阵去(代价为表示空地的整数),求最小代价 思路: 网络流最小割 ...

  7. 「Luogu P2015」二叉苹果树 解题报告

    题面 一个二叉树,边数为n\((2<n\le 100)\),每条边有一个权值,求剪枝后剩下p\((1<p<n)\)条边,使p条边的权值和最大 还看不懂?-- 2 5 input:5 ...

  8. 「Luogu P2508」[HAOI2008]圆上的整点 解题报告

    题面 给定圆的半径,求圆上整点数 这是一道很Nice的数学题!超爱!好吧,由于这道题,我去Study了一下复数(complex number)复杂的数 真棒!!! 有兴趣的戳这里!!!\(\huge ...

  9. 「Luogu P1210」回文检测 解题报告

    题面 这是一道诡异的黄题 居然让你求一串吧啦吧啦的东西中 字母(大小写)最长的回文串的长度,还要输出完整的串 吐血 思路: 保持淡定,我们啥都不会,就会Manacher,那就用Manacher大法! ...

随机推荐

  1. 前端知识体系(二)http请求

    https://blog.csdn.net/Lammonpeter/article/details/81358387 一.DNS解析 首先DNS域名系统的作用是将输入的url域名解析成ip地址以方便对 ...

  2. oracle用NOT EXISTS替代NOT IN

    在子查询中,NOT IN子句将执行一个内部的排序和合并. 无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历).  为了避免使用NOT IN ,我们可以把它改写成外连 ...

  3. Pytorch 多 GPU 并行处理机制

    Pytorch 的多 GPU 处理接口是 torch.nn.DataParallel(module, device_ids),其中 module 参数是所要执行的模型,而 device_ids 则是指 ...

  4. H3C 显示RIP当前运行状态及配置信息

  5. DIRECTORY_SEPARATOR 与 getcwd

    DIRECTORY_SEPARATOR:目录分隔符,linux上就是’/’    windows上是’\’ ,php的内置常量是一个显示系统分隔符的命令,php的内部常量,不需要任何定义与包含即可直接 ...

  6. Pandas库之DataFrame

    Pandas库之DataFrame 1 简介 DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表. 或许说它可能有点像matlab的矩阵,但是matlab ...

  7. LINUX内核参数调优集锦

    1.linux内核参数注释 2.两种修改内核参数方法 3.内核优化参数生产配置 1.linux内核参数注释 以下表格中红色字体为常用优化参数 根据参数文件所处目录不同而进行分表整理 下列文件所在目录: ...

  8. C# 如何引用 WshShell 类

    如果想要创建快捷方式等,很多使用都需要引用 WshShell 类,这个类需要通过 COM 的方法引用 引用 WshShell 不是在一个程序集,而是 Windows Script Host Objec ...

  9. H3C进入目录---用户视图

    进入logfile文件目录 <H3C>cd logfile/        //进入目录 <H3C>pwd             //显示当前所属的目录 cf:/logfil ...

  10. H3C保存当前配置--用户图示(console)以上

    <H3C>save         //此种保存只默认保存为Startup.cfg ,系统默认是加载此文件 The current configuration will be writte ...