华为OD机试 - 统一限载货物数最小值(C++题解)
在本篇文章中,我们将探讨华为OD机试中的一道经典题目——如何确定中转车的最小限载货物数。该题目考察了二分查找算法的应用,要求在满足供货商货物不拆装的前提下,找到中转车的最小统一限载货物量。本文将详细剖析题目的背景、题目描述和解题思路,并提供基于C++的完整代码实现和逐行代码注释。
题目描述
火车站附近的货物中转站负责将到站货物运往仓库。小明在中转站负责调度2K辆中转车,其中K辆用于干货,K辆用于湿货。货物由不同供货商发来,按到站顺序依次进站,小明需要按照卸货顺序依次将货物装载到中转车上。
规则:
- 一个供货商的货物只能装到一辆车上,不能拆装。
- 一辆车可以装多个供货商的货物,但不能超过该车的限载量。
- 小明需要为所有中转车统一限载货物量,并且在完成所有货物中转的前提下,要求中转车的最小统一限载货物数。
输入描述
- 第一行:表示供货商数量
length
(1 ≤length
≤ 10^4)。 - 第二行:表示货物的数组
goods
,goods[i]
表示第i个供货商发来的货