当前位置: 首页 > 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.jsqmd.com/news/20706/

相关文章:

  • 解题报告-拯救计划(概率 DP)
  • 解码Linux文件IO之库的制作与应用
  • 20251023 正睿二十连测
  • 1019:浮点数向零舍入(分正负取整)
  • 创建 SQL Server 数据库【通用】
  • HNSW算法实战:用分层图索引替换k-NN暴力搜索
  • 日志分析-IIS日志分析
  • Spring Boot 自动配置之 TaskExecutor - 实践
  • 二分图/忆re.
  • 编程与数学 03-009 Linux 操作系统应用 22_Linux 故障排除与问题克服
  • 《IDEA 2025长效采用配置指南:有效期配置至2099年实战之JetBrains全家桶有效》​
  • 如何制作PDF文件目录? - 详解
  • todesk远程到被控Mac后能看到画面,鼠标键盘执行无反应
  •  pytorch 66页实验题
  • 10/23
  • 玛哈特十一辊矫平机:把金属板送进“11 次节拍器” - 教程
  • JAVA 排序用法
  • esp32-usb-jtag 调试踩坑
  • MySQLDay3
  • 第3天(中等题+简单题 数组、滑动窗口)
  • 完整教程:微信小程序学习(一)
  • ollama v0.12.2 版本更新详解:Qwen3 架构协助、Multi-Regex 分词器、新引擎前后缀匹配等功能升级
  • 深入解析:XML中的 CDATA mybaitis xml中的 <![CDATA[ xxxx ]]>
  • MySQL主从同步读写分离
  • AI股票预测分析报告 - 2025年10月23日 20:26
  • 软件包管理
  • nginx反向代理测试搭建
  • SwiftUI NavigatorStack 导航容器
  • 深入解析:【仿生机器人】基于 GPT-SoVITS 的 发声器
  • .NET Core报错克服【无废话上操作】