当前位置: 首页 > 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.hskmm.com/?act=detail&tid=37638

相关文章:

  • DM8 安装包 for linux_x86
  • MPK(Mirage Persistent Kernel)源码笔记(1)--- 基础原理
  • 模拟can通信
  • 解题报告-拯救计划(概率 DP)
  • 日志分析-IIS日志分析
  • Min_25 筛
  • 解码Linux文件IO之库的制作与应用
  • 20251023 正睿二十连测
  • 1019:浮点数向零舍入(分正负取整)
  • 二分图/忆re.
  • 《IDEA 2025长效采用配置指南:有效期配置至2099年实战之JetBrains全家桶有效》​
  • ZKW线段树
  •  pytorch 66页实验题
  • Visual Studio 插件 - 喝水提醒 - 指南
  • JAVA 排序用法
  • 10/23
  • 10月23日
  • 第3天(中等题+简单题 数组、滑动窗口)
  • esp32-usb-jtag 调试踩坑
  • MySQLDay3
  • 飞牛OS通过docker部署SillyTavern酒馆
  • MySQL主从同步读写分离
  • ollama v0.12.2 版本更新详解:Qwen3 架构协助、Multi-Regex 分词器、新引擎前后缀匹配等功能升级
  • AI股票预测分析报告 - 2025年10月23日 20:26
  • 软件包管理
  • nginx反向代理测试搭建
  • 基础概念
  • .NET Core报错克服【无废话上操作】
  • 题解:P11831 [省选联考 2025] 追忆
  • 2025-10-23 MX-S 模拟赛 赛后总结【MX】