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

C++算法:连续时间+多任务并行(二分)

🍗 炸鸡排问题(连续时间并行调度)
一、题目本质

有 n 个任务(鸡排),第 i 个任务需要 t[i] 的总处理时间,同时最多(且必须)处理 k 个任务,任务可随时切换,但完成的任务不能再占用资源
求:最多能持续运行多长时间

👉 本质是:
连续时间 + 必须恰好 k 个并行任务的调度问题

二、关键建模思想

把炸锅看成一个“资源池”:每 1 秒,炸锅消耗 k 单位工作量,第 i 个鸡排最多能提供 t[i] 单位工作量,在 T 秒内,第 i 个鸡排最多贡献min(t[i], T)

三、核心可行性条件(最重要)

炸锅能持续 T 秒 当且仅当:∑min(ai​,T)≥kT

含义解释

左边:所有鸡排在 T 秒内最多能提供的炸制时间

右边:炸锅在 T 秒内必须消耗的炸制时间

四、通用结论(可迁移)

所有:
1.连续时间
2.多任务可切换
3.必须同时运行 k 个任务

都可以尝试:∑min(ai​,T)≥kT进行二分判断

五、题目

PG:炸鸡排

浮点数二分:当答案为浮点数时,二分终止条件不再是left>right,而是用一个较大的二分次数来限制。

intN=100;while(N--){doubleT=(left+right)*1.0/2;// 验证doublecnt=0;for(doubletime:t){cnt+=min(time,T);}if(cnt>=k*T){left=T;}else{right=T;}}

LeetCode:同时运行N台电脑

答案为整型的开区间二分:判断条件为left+1<right,从而保证区间内一定包含整数,否则返回left

longlongmaxRunTime(intn,vector<int>&batteries){longlongleft=0;longlongright=0;for(intt:batteries){right+=t;}right/=n;right+=1;while(left+1<right){longlongmid=(left+right)/2;longlongcnt=0;for(longlongt:batteries){cnt+=min(t,mid);}if(cnt>=mid*n){left=mid;}else{right=mid;}}returnleft;}
http://www.cnnetsun.cn/news/114807.html

相关文章:

  • DVWA -SQL Injection-通关教程-完结
  • AI大模型:未来就业的吞噬者还是创造者?揭秘其对普通人工作的影响!
  • 0x3f第七天 二叉搜索树
  • 扩容U盘,资料毁灭盘
  • 数据结构学习篇(5)---顺序表和链表的区别
  • 基于Vue.js和Spring Boot的新能源汽车充电站管理系统的设计与实现文献综述
  • 【Matlab】代码库:RGB三通道图像←互转→RGB次序平铺二维
  • 使用 html2canvas + jsPDF 生成PDF 的简单示例(含文字下沉修复)
  • Vue3+Monaco Editor封装及SQL编辑器实现
  • MiniCPM-V 4.5
  • Flutter工程化与协作实践指南
  • Excel技巧:提取身份证号码中的出生年月日
  • 软工毕业设计创新的开题分享
  • Oracle数据库物理备份与恢复实战指南
  • 告别“养死”魔咒!AI+知识库+物联网,打造零失败智能种植系统(附架构图+实操指南)
  • 安卓基础之《(4)—Activity组件(2)》
  • 打破数据堵点:6 大主流CRM厂商全链路数据流转能力横评与选型指南
  • 小程序毕设项目:基于springboot+微信小程序的校园活动管理系统设计与实现(源码+文档,讲解、 调试运行,定制等)
  • 小程序毕设项目:基于springboot+微信小程序的DIY电脑推荐与交流平台(源码+文档,讲解、 调试运行,定制等)
  • 小程序毕设项目:基于springboot+微信小程序的在线复习小程序(源码+文档,讲解、 调试运行,定制等)
  • 安徽做SCARA机器人的公司有哪些?
  • 【JavaWeb】MVC模式_理论简介
  • 【JavaWeb】日程管理01——登录页及数据校验功能
  • springboot中File默认路径
  • 【2025年AI 编程时代的热点】
  • 【C++ 笔记】从 C 到 C++:核心过渡 (中)
  • SQL约束解析
  • 地铁调研12-17
  • 现代软件测试工具全景对比与选型指南
  • 基于 Apache POI 的体检报告 Word 生成实战文档