负载均衡(蓝桥)(堆)

文章描述了一个关于计算机任务分配的问题,其中涉及计算机的运算能力和任务的耗时、算力需求。程序需要根据给定的时间戳、计算机算力和任务参数,判断任务能否成功分配,并输出计算机的剩余运算能力。示例展示了如何处理这种情况,包括一些失败的分配尝试。
摘要由CSDN通过智能技术生成

有 n 台计算机,第 i台计算机的运算能力为 vi。

有一系列的任务被指派到各个计算机上,第 i 个任务在 ai 时刻分配,指定计算机编号为 bi,耗时为 ci 且算力消耗为 di。

如果此任务成功分配,将立刻开始运行,期间持续占用 bi号计算机 di 的算力,持续 ci 秒。

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

输入格式

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

第二行包含 n 个整数 v1,v2,···vn,分别表示每个计算机的运算能力。

接下来 m 行每行 4 个整数 ai,bi,ci,di意义如上所述。数据保证 ai 严格递增,即 ai<ai+。

输出格式

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

数据范围

对于 20%20% 的评测用例,n,m≤200
对于 40%40% 的评测用例,n,m≤2000
对于所有评测用例,1≤n,m≤200000,1≤ai,ci,di,vi≤109,1≤bi≤n

输入样例:

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

输出样例:

2
-1
-1
1
-1
0

样例解释

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

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

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

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

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

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

难度:中等
时/空限制:1s / 256MB
总通过数:2142
总尝试数:4094
来源:第十二届蓝桥杯省赛第二场C++A/B组
算法标签

 

#include <iostream>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;
constexpr int N=2e5+7;
typedef long long ll;
int n,m;
int s[N];
typedef pair<int,int>PII;
priority_queue<PII, vector<PII>, greater<PII>>q[N];
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%d",&s[i]);
    }
    while(m--){
        int a,b,c,d;
        scanf("%d%d%d%d",&a,&b,&c,&d);
        while(!q[b].empty()&&q[b].top().first<=a){
            s[b]+=q[b].top().second;
            q[b].pop();
        }
       if(s[b]>=d){
           q[b].push({(a+c),d});
           s[b]-=d;
           printf("%d\n",s[b]);
       }
       else{
           printf("-1\n");
       }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

q619718

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值