news 2026/9/11 16:29:33

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 5:53:59

CSS学习(二)---盒子模型,字体图标,精灵图

文章目录 一、盒子模型1. 盒子分类(1) 区块盒子&#xff08;block&#xff09;(2) 行内盒子&#xff08;inline&#xff09;2. 盒子模型组成&#xff08;1&#xff09;边框 border&#xff08;2&#xff09;过渡效果 Transition&#xff08;2&#xff09;内边距 padding&#…

作者头像 李华
网站建设 2026/9/11 10:39:38

【Processing】读取并全屏显示、编辑图片模板

本文展示了两种在Processing中全屏显示图片的方法。第一种是基础实现&#xff0c;仅全屏显示图片&#xff1b;第二种增加了交互功能&#xff0c;包括局部像素处理&#xff08;将特定位置像素改为绿色&#xff09;和文字显示&#xff08;通过按键切换"IP_ON"/"IP…

作者头像 李华
网站建设 2026/9/11 11:07:30

嵌入式5个“宝藏开源项目”复刻完,代码能力直接封神

嵌入式5个“宝藏开源项目”复刻完&#xff0c;代码能力直接封神 写代码时你是不是也遇到过这些“崩溃瞬间”&#xff1f; 驱动能写但架构建不出来&#xff0c;扩功能就得大改&#xff1b;代码凑活能跑&#xff0c;可复用性为零&#xff0c;后续维护堪比拆炸弹&#xff1b;啃完几…

作者头像 李华
网站建设 2026/9/10 18:52:22

WebSocket 实时聊天功能

在上一讲中&#xff0c;Spring Boot 后端实现 WebSocket 已创建过后端项目&#xff0c;现在开始补充前端 在项目下新增一个模块frontend【与后端src目录平级】 在前端目录下执行npm install 不看上一讲也可以&#xff0c;直接创建一个前后端项目即可&#xff0c;下面会给出完整…

作者头像 李华
网站建设 2026/9/11 4:45:56

蓝桥杯103 日期问题

题目链接&#xff1a;https://www.lanqiao.cn/problems/103/learning/ 前置知识 输入解析 要会什么&#xff1f; 会用这一句把 AA/BB/CC 读进来&#xff1a; int a,b,c; scanf("%d/%d/%d", &a, &b, &c); 要记住什么&#xff1f; "%d/%d/%d"…

作者头像 李华
网站建设 2026/9/11 0:18:57

leetcode解题方法

双指针法&#xff1a;适用于有序数组去重、两数之和等问题。通过左右指针减少时间复杂度至O(n)。示例代码&#xff1a;c复制插入int removeDuplicates(int* nums, int numsSize) {if (numsSize 0) return 0;int slow 0;for (int fast 1; fast < numsSize; fast) {if (num…

作者头像 李华