力扣1882.使用服务器处理任务

力扣1882.使用服务器处理任务

  • 两个优先队列

    • 一个放未使用的服务器
    • 一个放已使用的服务器
cpp 复制代码
  class Solution {
      using PLI = pair<long long, int>;
      using PII = pair<int, int>;
  public:
      vector<int> assignTasks(vector<int>& servers, vector<int>& tasks) {
          int m = servers.size(),n = tasks.size();
          priority_queue<PLI, vector<PLI>, greater<PLI>> busy;
          priority_queue<PII, vector<PII>, greater<PII>> idle;
          for(int i=0;i<m;i++)
              idle.emplace(servers[i],i);
          
          long long ts = 0;
          //把占用结束的服务器弹出
          auto release = [&]()
          {
              while(!busy.empty() && busy.top().first <= ts)
              {
                  auto &&[_,idx] = busy.top();
                  idle.emplace(servers[idx],idx);
                  busy.pop();
              }
          };
  
          vector<int> res;
          for(int i=0;i<n;i++)
          {
              ts = max(ts, (long long)i);
              //把占用结束的弹出
              release();
              if(idle.empty())
              {
                  ts = busy.top().first;
                  release();
              }
              //取未占用的服务器
              auto&& [_,idx] = idle.top();
              res.push_back(idx);
              busy.emplace(ts+tasks[i] , idx);
              idle.pop();
          }
          return res;
      }
  };
相关推荐
Kk.080219 分钟前
项目《基于Linux下的mybash命令解释器》(一)
前端·javascript·算法
彭泽布衣22 分钟前
Linux异常文件名文件如何删除
linux·运维·服务器
优泽云安全22 分钟前
如何选择IRCS云信息安全管理系统 IRCS云资源评测
linux·服务器·安全·安全架构
zhgjx-dengkewen26 分钟前
eNSP实验:配置NAT Server
服务器·网络·华为·智能路由器
SteveSenna38 分钟前
Trossen Arm MuJoCo自定义1:改变目标物体
人工智能·学习·算法·机器人
添砖java‘’40 分钟前
NAT代理、内网打洞和内网穿透
linux·服务器·网络
SilentSamsara41 分钟前
Linux 文件系统入门:目录结构不是随便画的
linux·运维·服务器
yong99901 小时前
IHAOAVOA:天鹰优化算法与非洲秃鹫优化算法的混合算法(Matlab实现)
开发语言·算法·matlab
陳10301 小时前
Linux:进程状态和优先级
linux·运维·服务器
monana61 小时前
Linux离线安装nvm 和 node
linux·运维·服务器