1 条题解
-
0
CJBS04|木料等长切割 题解
核心算法
二分答案,寻找最大的可行段长。
思路推导
给定段长 ,第 根木料能提供 段。若总段数至少为 ,则 可行;更短的长度也一定可行。可行性随 增大呈“真到假”的单调变化。
维护
left为可行值、right为不可行值。初始left=0,right=max(a)+1,不断用中点缩小边界。正确性说明
由于任意可行长度的更小值也可行,答案集合是连续整数区间 。循环始终保持
left可行、right不可行;结束时二者相邻,因此left正是最大的可行整数。复杂度
- 每次检查:;
- 二分次数:;
- 总时间:;
- 额外空间:。
易错点
mid=0时不能做除法,因此只在left+1<right时取正中点;- 段数之和可能很大,应使用
long long并在达到 后提前停止; - 题目要求“至少 段”,多切出的段不影响可行性;
- 不可行时答案为
0。
- 1
信息
- ID
- CJBS04
- 时间
- 2000ms
- 内存
- 256MiB
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者