蓝桥杯每日一真题——[蓝桥杯 2021 省 AB2] 负载均衡(优先队列,模拟)

文章目录

  • [蓝桥杯 2021 省 AB2] 负载均衡
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 提示
      • 思路
      • 全部代码:

[蓝桥杯 2021 省 AB2] 负载均衡

题目描述

n n n 台计算机,第 i i i 台计算机的运算能力为 v i v_{i} vi

有一系列的任务被指派到各个计算机上,第 i i i 个任务在 a i a_{i} ai 时刻分配,指定计算机编号为 b i b_{i} bi, 耗时为 c i c_{i} ci 且算力消耗为 d i d_{i} di。如果此任务成功分配,将立刻开始运行, 期间持续占用 b i b_{i} bi 号计算机 d i d_{i} di 的算力, 持续 c i c_{i} ci 秒。

对于每次任务分配,如果计算机剩余的运算能力不足则输出 − 1 -1 1,并取消这次分配,否则输出分配完这个任务后这台计算机的剩余运算能力。

输入格式

输入的第一行包含两个整数 n , m n, m n,m,分别表示计算机数目和要分配的任务数。

第二行包含 n n n 个整数 v 1 , v 2 , ⋯ v n v_{1}, v_{2}, \cdots v_{n} v1,v2,vn,分别表示每个计算机的运算能力。

接下来 m m m 行每行 4 4 4 个整数 a i , b i , c i , d i a_{i}, b_{i}, c_{i}, d_{i} ai,bi,ci,di,意义如上所述。数据保证 a i a_{i} ai 严格递增,即 a i < a i + 1 a_{i}<a_{i+1} ai<ai+1

输出格式

输出 m m m 行,每行包含一个数,对应每次任务分配的结果。

样例 #1

样例输入 #1

2 6
5 5
1 1 5 3
2 2 2 6
3 1 2 3
4 1 6 1
5 1 3 3
6 1 3 4

样例输出 #1

2
-1
-1
1
-1
0

提示

【样例说明】

时刻 1 1 1,第 1 1 1 个任务被分配到第 1 1 1 台计算机,耗时为 5 5 5,这个任务时刻 6 6 6 会结束, 占用计算机 1 1 1 的算力 3 3 3

时刻 2 2 2,第 2 2 2 个任务需要的算力不足,所以分配失败了。

时刻 3 3 3,第 1 1 1 个计算机仍然正在计算第 1 1 1 个任务,剩余算力不足 3 3 3,所以失败。

时刻 4 4 4,第 1 1 1 个计算机仍然正在计算第 1 1 1 个任务,但剩余算力足够,分配后剩余算力 1 1 1

时刻 5 5 5,第 1 1 1 个计算机仍然正在计算第 1 1 1 4 4 4 个任务,剩余算力不足 4 4 4,失败。

时刻 6 6 6,第 1 1 1 个计算机仍然正在计算第 4 4 4 个任务,剩余算力足够,且恰好用完。

【评测用例规模与约定】

对于 20 % 20 \% 20% 的评测用例, n , m ≤ 200 n, m \leq 200 n,m200

对于 40 % 40 \% 40% 的评测用例, n , m ≤ 2000 n, m \leq 2000 n,m2000

对于所有评测用例, 1 ≤ n , m ≤ 2 × 1 0 5 , 1 ≤ a i , c i , d i , v i ≤ 1 0 9 , 1 ≤ b i ≤ n 1 \leq n, m \leq 2\times 10^5,1 \leq a_{i}, c_{i}, d_{i}, v_{i} \leq 10^{9}, 1 \leq b_{i} \leq n 1n,m2×105,1ai,ci,di,vi109,1bin

蓝桥杯 2021 第二轮省赛 A 组 H 题(B 组 I 题)。


思路

呀呀呀,任务写成进程了呀呀呀呀学操作系统学傻了

  1. 有n个计算机,有算力,如果算力足够可以直接加入计算机中,如果算力不够就不行,这就要求我们实时的更新在这个计算机中的进程,把已经计算完的进程及时的退出,那就要求我们要知道在每个计算机中结束时间最早的是哪一个进程,然后将他弹出,所以可以使用小根堆来代表计算机储存每个进程。
  2. 这个进程有用的信息就是,结束时间和算力消耗,每个进程的使用的编号可以用数组编号对应所以可以用pair数组来存,当然也可以用结构体来存。
  3. 实时的模拟进程就完事了,没有别的什么的需要注意的。

全部代码:

#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;

const int N = 2e5 + 10;
int n, m;
int s[N];
// pair<结束时间,消耗算力>                                                         // 存储计算机的当前算力
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q[N]; // 小根堆 pair先比较第一个,第一个相同比较第二个

int main()
{
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
        cin >> s[i]; // 运算能力
    while (m--)
    {
        int a, b, c, d;
        cin >> a >> b >> c >> d; // 分配时刻,计算机编号,耗时,算力消耗
        // 维护
        while (q[b].size() && q[b].top().first <= a) // 最小的右端点小于算完了
        {
            s[b] += q[b].top().second; // 结束运算上一个任务,返回算力
            q[b].pop();                // 弹出上一个任务
        }
        if (s[b] < d)
            printf("-1\n"); // 算力不够
        else
        {
            q[b].push({a + c, d}); // 将新的任务加入
            s[b] -= d;
            printf("%d\n", s[b]);
        }
    }
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

<Linux>进程控制

进程控制 文章目录进程控制一、进程创建1.fork函数认识2.写时拷贝3.fork常规用法4.fork调用失败的原因二、进程终止1.进程退出场景2.进程退出码3.进程退出的方式三、进程等待1.进程等待是什么&#xff1f;2.进程等待的必要性3.进程等待的方法3.1.wait函数3.2.waitpid函数4.如何…

为什么 ChatGPT 输出时经常会中断,需要输入“继续” 才可以继续输出?

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;蚂蚁集团高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐…

树莓派Pico开发板I2C OLED显示模块接口与MicroPython编程

首先简要介绍I2C接口及I2C接口OLED显示模块&#xff0c;然后讲述Pico开发板I2C总线引脚及其与I2C总线OLED SSD1306显示模块的接口原理&#xff0c;最后给出Pico开发板控制OLED屏显示文字/图形的MicroPython程序实例。 一、I2C接口简介 I2C/IIC/I2C&#xff08;Inter-Integrated…

Linux内核Socket通信原理和实例讲解

关于对 Socket 的认识&#xff0c;大致分为下面几个主题&#xff0c;Socket 是什么&#xff0c;Socket 是如何创建的&#xff0c;Socket 是如何连接并收发数据的&#xff0c;Socket 套接字的删除等。Socket 是什么以及创建过程一个数据包经由应用程序产生&#xff0c;进入到协议…

平板触控笔哪些品牌好?ipad触控笔推荐平价

苹果电容笔与平替电容笔两者需要根据我们的预算以及需求去选择&#xff0c;要是日常多用于用于绘画&#xff0c;建议可以用Apple Pencil&#xff0c;而对于日常仅仅用于学习与记笔记&#xff0c;可以用平替电容笔&#xff0c;由于平替电容笔的品质与表现都非常优秀。小编整理了…

初识进程

文章目录一、进程的概念1. 进程是什么及进程的管理2. Linux 下的 pcb3. 系统调用接口 getpid 和 getppid4. 系统调用接口 fork一、进程的概念 1. 进程是什么及进程的管理 在 Linux下 ./binaryfile 运行一个程序或者在 Windows下双击运行一个程序时&#xff0c;程序就变成了一个…

【百面成神】spring基础12问,你能坚持到第几问

前 言 &#x1f349; 作者简介&#xff1a;半旧518&#xff0c;长跑型选手&#xff0c;立志坚持写10年博客&#xff0c;专注于java后端 ☕专栏简介&#xff1a;java面试宝典&#xff0c;特点&#xff1a;全、精、深、简&#xff0c;力求每个核心知识点1分钟回答好。 &#x1f3…

RK3588平台开发系列讲解(视频篇)RTP H264 码流打包详解

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、单 NALU 封包方式二、组合封包方式三、分片封包方式沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 H264 码流是放在 RTP 的有效载荷部分的。因此有效载荷前面的 RTP 头部跟码流本身是没有关系的,所以我…

Python|蓝桥杯进阶第六卷——搜索

欢迎交流学习~~ 专栏&#xff1a; 蓝桥杯Python组刷题日寄 蓝桥杯进阶系列&#xff1a; &#x1f3c6; Python | 蓝桥杯进阶第一卷——字符串 &#x1f50e; Python | 蓝桥杯进阶第二卷——贪心 &#x1f49d; Python | 蓝桥杯进阶第三卷——动态规划 ✈️ Python | 蓝桥杯进阶…

mysql数据库介绍

&#x1f49c;今天对mysql的一些基础概念进行讲诶横扫&#xff0c;如概念、特点、优势、发展历史等等。对之前内容感兴趣的同学可以参考&#x1f447;&#xff1a; 链接: mysql学习之数据系统概述 &#x1f3be;让我们开始今日份的学习吧&#xff01; 目录1. mysql的基本概念…

十七、网上商城项目(5)

本章概要 购物车 购物车状态管理配置购物车组件 结算页面用户管理 用户状态管理配置用户注册组件用户登录组件 17.8 购物车 在一个电商网站中&#xff0c;购物车在很多页面都需要用到&#xff0c;因此非常适合放在 Vuex 的 store 中进行集中管理。在本项目中&#xff0c;采…

【北大青鸟天府校区的Java专业怎么样?】

北大青鸟天府校区是北大青鸟总部在西南投资兴办的重点校区&#xff0c;拥有极为强大的外部教育资源和就业资源&#xff0c;使咱们的学员能够享受更好、更完善的教学资源。超过23年的办学经验&#xff0c;培养了超过10000位学员&#xff0c;保障就业&#xff0c;学员就业率达到9…

[入门必看]数据结构2.3:线性表的链式表示

[入门必看]数据结构2.3&#xff1a;线性表的链式表示第二章 线性表2.3 线性表的链式表示知识总览2.3.1 单链表的定义2.3.2_1 单链表的插入删除2.3.2_2 单链表的查找2.3.2_3 单链表的建立2.3.3 双链表2.3.4 循环链表2.3.5 静态链表2.3.6 顺序表和链表的比较2.3.1 单链表的定义单…

JUC高级四:Java内存模型之JMM

JUC高级四:Java内存模型之JMM 1. 计算机硬件存储体系(JMM为什么诞生) 因为有这么多级的缓存(cpu和物理主内存的速度不一致的)&#xff0c;CPU的运行并不是直接操作内存而是先把内存里边的数据读到缓存&#xff0c;而内存的读和写操作的时候就会造成不一致的问题 在我们cpu寄存…

WebRTC开源库内部调用abort函数引发程序发生闪退问题的排查

目录 1、初始问题描述 2、使用Process Explorer工具查看到处理音视频业务的rtcmpdll.dll模块没有加载起来 3、使用Dependency Walker工具查看到rtcmpdll.dll依赖的库有问题 4、更新库之后Debug程序启动时就发生异常&#xff0c;程序闪退 5、VS调试时看不到有效的函数调用堆…

十大Python可视化工具,太强了

今天介绍Python当中十大可视化工具&#xff0c;每一个都独具特色&#xff0c;惊艳一方。 Matplotlib Matplotlib 是 Python 的一个绘图库&#xff0c;可以绘制出高质量的折线图、散点图、柱状图、条形图等等。它也是许多其他可视化库的基础。 import matplotlib.pyplot as p…

OpenCV入门(二十)快速学会OpenCV 19 对象测量

OpenCV入门&#xff08;二十&#xff09;快速学会OpenCV 19 对象测量1.对象测量2.多边形拟合3.计算对象中心作者&#xff1a;Xiou 1.对象测量 opencv 中对象测量包括&#xff1a; 如面积&#xff0c;周长&#xff0c;质心&#xff0c;边界框等。 弧长与面积测量&#xff1b; …

《LKD3粗读笔记》(4)进程调度

1、多任务 什么是多任务操作系统&#xff1f; 能同时并发地交互执行多个进程。注意是并发而不是并行。特别地&#xff0c;在多处理机机器上可以实现真正意义上的并行&#xff0c;因为它长了多个脑子多任务操作系统有哪些分类&#xff1f; 非抢占式多任务&#xff08;cooperati…

【云原生】Kubernetes(k8s)部署 MySQL+Dubbo+Nacos服务

一、说明二、部署 MySQL三、部署 Nacos四、部署 Dubbo 服务4.1. 创建镜像仓库的密钥4.2. 部署 provider 服务4.3. 部署 consumer 服务五、测试一、说明 本文介绍基于 Kubernetes(k8s) 环境集成阿里云 私有镜像仓库 来部署一套 Dubbo Nacos 的微服务系统&#xff0c;并使用 Ku…

7个最好的PDF编辑器,帮你像编辑Word一样编辑PDF

PDF 是具有数字思维的组织的重要交流工具。提供高效的工作流程和更好的安全性&#xff0c;可以创建重要文档并与客户、同事和员工共享。文档的布局已锁定&#xff0c;因此无论在什么设备上查看&#xff0c;格式都保持不变。这是让每个人保持一致的好方法——尤其是那些使用Micr…
最新文章