1 条题解
-
0
CJBS06|分批处理任务 题解
核心算法
二分最小的最大批次工作量;检查时按顺序贪心装入当前批次。
思路推导
给定上限 ,从左到右把任务尽量放入当前批次;若再放一个就超过 ,才开启新批次。这样得到的批次数最少。若最少批次数不超过 ,则可以继续拆分某些批次得到恰好 个非空批次,因此 可行。
可行性随 增大呈“假到真”。答案下界是最大单个工作量,上界是所有工作量之和。
正确性说明
固定 时,贪心让每个批次尽量向右延伸,因此它关闭第 个批次的位置不会早于任何其他合法划分,使用的批次数最少。于是
groups<=m当且仅当存在不超过 批的划分。由于 且每项为正,少于 批时总能继续拆成恰好 个非空批次而不增加最大和。二分得到最小可行上限。复杂度
- 每次检查:;
- 二分次数:;
- 总时间:;
- 额外空间:。
易错点
- 批次必须连续,不能排序任务;
- 下界至少是
max(a[i]),上界是总和; - 超过上限时当前任务应成为新批次的第一个;
groups<=m才可行,不必强求检查过程正好产生 批;- 所有和都用
long long。
- 1
信息
- ID
- CJBS06
- 时间
- 3000ms
- 内存
- 256MiB
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者