当前位置: 首页 > news >正文

2398.预算内的最多机器人数目 滑动窗口+单调队列

        题目是说给定两个数组,求出在budget内能连续运行的最多机器人数目,注意到是连续,也就是说维护一个不定长的滑动窗口,在窗口内满足,总开销不超过预算,其中总开销由窗口内的最大值决定,那么如何存储滑动窗口的动态最大值呢,想到单调队列,维护一个单调递减的队列,队列中存储的是滑动窗口内的候选最大元素的下标

        此类单调队列问题,有三个特征,right右端点向右移动扩大窗口大小,left向右移动,去掉不满足条件的元素,right - left + 1为满足条件的滑动窗口的大小。

        单调队列模板请看239. 滑动窗口最大值-CSDN博客

        代码

class Solution {
public:int maximumRobots(vector<int>& chargeTimes, vector<int>& runningCosts, long long budget) {int n = chargeTimes.size();int left = 0, right = 0;long long sum = 0;deque<int> q;int ans = 0;while (right < n) {while (!q.empty() && chargeTimes[q.back()] <= chargeTimes[right]) {q.pop_back();}q.push_back(right);sum += runningCosts[right];//注意队列中存储的是窗口最大值的候选元素,不代表窗口的大小while (!q.empty() && chargeTimes[q.front()] + (right - left + 1) * sum > budget) {if (q.front() == left) q.pop_front();sum -= runningCosts[left];left++;}ans = max(ans,right - left + 1);right++;}return ans;}
};

相关文章:

  • 鸿蒙 使用动画 简单使用
  • vue-quill-editor的失焦事件
  • conda init before conda activate
  • 代码随想录算法训练营第三十三天(补)
  • [人机交互]交互设计过程
  • AI系列:智能音箱技术简析
  • TCGA数据库临床亚型可用!贝叶斯聚类+特征网络分析,这篇 NC 提供的方法可以快速用起来了!
  • 操作系统——第四章(文件的物理结构以及与逻辑结构的对比)
  • vue截图-html2canvas
  • V 型球阀设计标准:为带颗粒、料浆介质量身定制的卓越方案-耀圣
  • STM32裸机开发问题汇总
  • 统一返回JsonResult踩坑
  • PBR材质-Unity/Blender/UE
  • 优选算法系列(8.多源BFS)
  • 个人网站versionI正式上线了!Personal Website for Jing Liu
  • RISC-V架构深度解析
  • 高组装导轨的特点
  • 【Prometheus】 kube-state-metrics中的指标kube_pod_labels
  • 元子与元组的关系解析:从简单到复杂大跨界大综合的融智学研究
  • SSRF请求伪造
  • 欧盟委员会计划对950亿欧元美国进口产品采取反制措施
  • 暴雨及强对流天气黄色预警已发布!南方进入本轮降雨最强时段
  • 金融监管总局:力争实现全国普惠型小微企业贷款增速不低于各项贷款增速
  • 中国经济新动能|警惕数字时代下经济的“四大极化”效应
  • 印媒证实:至少3架印军战机7日在印控克什米尔地区坠毁
  • 央行将增加3000亿元科技创新和技术改造再贷款额度