首页 > 其他分享 >P8755 [蓝桥杯 2021 省 AB2] 负载均衡

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

时间:2023-11-22 23:00:25浏览次数:38  
标签:cp int len 蓝桥 AB2 pile 2021 now 算力

原题链接

我曾经写题时有个疑惑,那就是会不会算力恢复之后大于最大算力?
其实不会,把消耗的算力想象成占领,恢复算力想象成撤离,不管怎么恢复,领地都是那个领地。

#include<bits/stdc++.h>
using namespace std;
int power[200005]={0};
struct unit
{
    int when,who,recover;
    //分别代表什么时候,哪台电脑,恢复多少算力
}pile[200005];//按恢复时刻进行堆排序
int len=0;
void out()//堆弹出堆顶元素,属于模板操作
{
    swap(pile[1],pile[len--]);
    //把最后一个元素放到堆顶,原来的堆顶放到最后删除,然后开始下沉操作
    int now=1;
    while(2*now<=len)
    {
        int son=2*now;//代表左儿子
        if(son+1<=len&&pile[son+1].when<pile[son].when)son++;
        //如果有右儿子并且右儿子比左儿子小
        if(pile[son].when<pile[now].when)
        {//和更小儿子交换
            swap(pile[son],pile[now]);
            now=son;
        }
        else break;//代表下沉完毕
    }
}
void in(int now)//堆放入新元素,也是属于模板操作
{
    while(pile[now].when<pile[now/2].when&&now>=2)
    {
        swap(pile[now],pile[now/2]);
        now/=2;
    }
}
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)scanf("%d",&power[i]);//代表电脑的最大算力
    for(int i=1;i<=m;i++)
    {
        int t,cp,last,consume;
        scanf("%d%d%d%d",&t,&cp,&last,&consume);
        while(len>=1&&pile[1].when<=t)
        {
            power[pile[1].who]+=pile[1].recover;
            out();
        }
        if(consume>power[cp])  printf("-1\n");//如果该操作所需算力大于该操作所需电脑的当前算力
        else
        {
            printf("%d\n",power[cp]-consume);//剩余算力
            len++;
            pile[len].when=t+last;//恢复时刻
            pile[len].who=cp;//恢复的电脑
            pile[len].recover=consume;//恢复的算力值
            in(len);
            power[cp]-=consume;
        }
    }
    return 0;
}

标签:cp,int,len,蓝桥,AB2,pile,2021,now,算力
From: https://www.cnblogs.com/pure4knowledge/p/17850551.html

相关文章

  • DOJ-team-match 7-20210919小学组-取数游戏
    DOJ-team-match7-20210919小学组-取数游戏取数游戏题目传送门首先明确一下贪心策略:两人必然会从大往小取当自己无法得分时,最优策略就是不让对方得分当自己可以得分时,得分所以,最后只需要便利数组,当A或B能得分时便得分,不能得分就不得分,但是不管能否得分都需要将最大的数取......
  • The 2021 ICPC Asia Nanjing Regional Contest (XXII Open Cup, Grand Prix of Nanjin
    Preface来场我最爱的SUA的题,而且恰逢南京站因此袋鼠题懂得都懂然而好家伙点开题目一看怎么全是OP题,我们队没一个玩原的这下大输特输了因此这场前中期可以说是崩完了,一个签到因为没判\(n=1\)从20min挂到150min,除此之外其它题目基本上都要挂上三四发不过好在最后20min连着过了卡......
  • 蓝桥杯 特别数的和
    #include <bits/stdc++.h>using namespace std;int main(){  int n,a,j,sum=0;  cin >> n;  for(int i=1;i<=n;++i)  {    a=i;    while(a)    {      j=a%10;      if(j==2 || j==0 || j==1 || j==9)      {......
  • 2023-2024-1 20211211 《信息安全系统设计与实现(上)》第13章
    1网络编程简介TCP/IP协议、UDP和TCP协议、服务器-客户机计算、HTTP和Web页面、动态Web页面的PHP和CGI编程2TCP/IP协议IPv432位地址IPv6128位地址TCP/IP协议顶层是使用TCP/IP的应用程序,用于登录到远程主机的ssh,用于交换电子邮件的mail、用于Web页面的http等应用程序需要......
  • P8613 [蓝桥杯 2014 省 B] 小朋友排队
    因为相邻两个数字交换,每次只能减少一个逆序对数量,所以这道题最终的交换次数就等于原序列当中逆序对的数量。但是因为每个数字的交换代价会随着交换次数而增加,所以虽然我们知道Σ数字交换次数=逆序对数量,我们也不能按照传统的逆序对数量统计方式直接计算,这样子会导致我们只知道......
  • 中国矿业大学CUMT 2021级java期末考试
    一.简答题(5题*8=40分)1.简要说出java程序运行过程2.final和static分别可以修饰什么,各自代表了什么意思(成员变量、成员方法、接口什么的)3.继承中子类对象初始化的全过程4.Java的成员方法和变量中静态绑定和动态绑定的区别5.同步和异步的区别:同步操作意味着在一个操作完成之前,下......
  • Adobe AfterEffects CC 2021 Mac Intel芯片 中文版
    软件介绍AfterEffects2021是Adobe推出的一款专业非线性视频编辑软件,经常需要编辑视频的人士对这款软件应该都不陌生吧。通过AfterEffects2021可以轻松制作火焰、冰雪、下雨等等视频后期特效,且效果都非常真实酷炫。软件自带丰富的动画资源库,满足用户的使用需求。神秘文件获......
  • Adobe AfterEffects CC 2021 Mac M1芯片 中文版
    软件介绍AfterEffects2021是Adobe推出的一款专业非线性视频编辑软件,经常需要编辑视频的人士对这款软件应该都不陌生吧。通过AfterEffects2021可以轻松制作火焰、冰雪、下雨等等视频后期特效,且效果都非常真实酷炫。软件自带丰富的动画资源库,满足用户的使用需求。神秘文件获......
  • Adobe Premiere Pro 2021 Mac M1芯片版下载
    软件介绍PremierePro2021版(15.0版)专注于满足现代视频创作者不断变化的需求,可帮助编辑人员和社交平台上的故事讲述者创建与众不同的视频内容,加快工作速度,同时让您能够根据需要灵活地改变工作流程。还有更多优势:CreativeCloud将您与整个创意应用程序和资源生态系统以及全球的......
  • Adobe Illustrator 2021 Mac Intel/M1芯片版下载
    软件介绍Adobeillustrator2021是一种工业标准矢量插画软件,可用于出版、多媒体和在线图像,然而,与著名的Adobephotoshop2021相比,Adobephotoshop2021却称得上是两大图形处理神器。但区别在于,photoshop主要提供图形后期处理功能,illustrator主要提供矢量图形设计,但都非常出色强大,......