当前位置: 首页 > news >正文

比赛题解 总结

1.[HNOI2003] 操作系统

思路

此题是一道大模拟,主要根据任务优先级来计算最后执行此任务的时间,此时我们可以进行分类讨论:

  • 当此任务的到达时间大于等于上一个未执行完任务的结束时间,上一个任务就一定能运行完,因此直接上个结束时间
  • 当此任务的到达时间小于上一个未执行完任务的结束时间,上一个任务就只能在 CPU 中运行一段时间,因此只能更新执行时间
    因为执行任务要看其优先级,因此我们用优先队列来存所有进入过 CPU 但还未运行完的任务,然后根据其优先级排序。

注意

我们需要用个变量 lati 来总时间,因此本文中的上一个 "上一个未执行完任务的结束时间" 是指 lati + 任务的执行时间

AC代码

点开有惊喜
#include<bits/stdc++.h>
#define ll long long 
using namespace std;
struct node{ll id,be,ti,yx;bool operator < (const node &a)const{if(yx==a.yx) return be>a.be;return yx<a.yx;}
}a;
ll lati;
priority_queue<node> q;
int main(){while(scanf("%lld%lld%lld%lld",&a.id,&a.be,&a.ti,&a.yx)!=EOF){while(q.size()&&q.top().ti+lati<=a.be){node b=q.top();q.pop();cout<<b.id<<" "<<lati+b.ti<<"\n";lati+=b.ti;}if(q.size()){node b=q.top();q.pop();b.ti-=a.be-lati;q.push(b);}q.push(a);lati=a.be;}while(q.size()){node b=q.top();q.pop();lati+=b.ti;cout<<b.id<<" "<<lati<<"\n";}return 0;
}
http://www.gsyq.cn/news/28715.html

相关文章:

  • 1019:浮点数向零舍入(分正负取整)
  • 创建 SQL Server 数据库【通用】
  • HNSW算法实战:用分层图索引替换k-NN暴力搜索
  • Spring Boot 自动配置之 TaskExecutor - 实践
  • 二分图/忆re.
  • 《IDEA 2025长效采用配置指南:有效期配置至2099年实战之JetBrains全家桶有效》​
  • 如何制作PDF文件目录? - 详解
  • todesk远程到被控Mac后能看到画面,鼠标键盘执行无反应
  • JAVA 排序用法
  • esp32-usb-jtag 调试踩坑
  • MySQLDay3
  • 飞牛OS通过docker部署SillyTavern酒馆
  • 深入解析:XML中的 CDATA mybaitis xml中的 <![CDATA[ xxxx ]]>
  • AI股票预测分析报告 - 2025年10月23日 20:26
  • 软件包管理
  • .NET Core报错克服【无废话上操作】
  • 题解:P11831 [省选联考 2025] 追忆
  • 2025-10-23 MX-S 模拟赛 赛后总结【MX】
  • Anaconda命令大全conda
  • 网络设备
  • Kafka-保证消息消费的顺序性及高可用机制 - 教程
  • 实用指南:PyTorch 数据处理工具箱:从数据加载到可视化的完整指南
  • 多级多卡训练模型时有些参数没有参与loss计算和梯度更新的解决办法
  • 在 GEO / AIO 角度:如何优化 SEO 内容?
  • Idea提高制作效率的快捷键最佳学习方式
  • Elasticsearch8容器化部署 - 实践
  • 4.6.2版本来了!快来看看新版本有哪些改动
  • 2025-10-22 ZR-J 模拟赛 赛后总结【ZR】
  • [grep] grep stream 2, the error message
  • Liferay Portal与DXP集合提供程序存在授权缺失漏洞分析