最少生产批次
P4916. 最少生产批次
场次:2026年5月9日-开发岗 · 来源:CodeFun2000 P4916
题目描述
工厂需要处理 个精密零件,每个零件都有一个参数值。在开始分配之前,你可以对这些零件进行任意重新排序。
你需要将所有零件分配到若干个生产批次中。每个批次至少包含 个零件,至多包含 个零件。对于一个恰好包含 个零件的批次,记该批次中零件参数的最大值为 ,最小值为 ,则必须满足
每个零件必须且只能属于一个批次。你的目标是使用尽可能少的批次来处理所有零件,请计算最少需要的批次数。
所有测试数据中, 的总和不超过 。 的取值范围均为 到 。 的取值范围为 到 。所有零件的参数均为不超过 的非负整数。
输入格式
第一行包含一个整数 (),表示测试数据组数。
接下来每组测试数据按以下格式给出:
第一行包含四个整数 (,,),含义如上述。
第二行包含 个整数,表示每个零件的参数(均为不超过 的非负整数)。
输出格式
对于每组测试数据,输出一行一个整数,表示最少需要的批次数。
示例
示例 1
输入:
1
5 0 0 2
1 1 2 2 2输出:
3说明:
将零件排序后为 [1, 1, 2, 2, 2]。
由于 ,条件变为 ,即每批内部所有零件参数必须完全相同。每批最多包含 个零件。1 有 2 个,正好组成一批;2 有 3 个,最多每批 2 个,因此至少需要两批(例如一批两个 2,另一批一个 2)。总共至少需要 3 批,这也是可以达到的最优方案。
示例 2
输入:
1
4 5 2 3
10 12 15 20输出:
2说明:
排序后的序列为 [10, 12, 15, 20]。
由于 ,所有 4 个零件无法放入同一个批次。
考察一种合法分批:
- 第一批
[10, 12, 15]:包含 个零件,最大值与最小值之差 ,条件要求 ,满足。 - 第二批
[20]:,,自然满足。
因此2批即可完成。由于不可能用1批完成(零件数超过 ),最小批次数为2。
示例 3
输入:
1
6 2 1 4
3 5 6 10 12 13输出:
2说明:
零件排序后为 [3, 5, 6, 10, 12, 13]。
约束为 。
一种最优方案:
- 第一批
[3, 5, 6]:,,需满足 ,合法。 - 第二批
[10, 12, 13]:,,同样合法。
总批次数为2。
若尝试用更多零件组成一批,例如[3, 5, 6, 10],则 ,,条件 不满足;且无法在一批内放下所有零件( 但极差超限)。因此最少批次为2。
示例 4
输入:
1
1 10 10 1
100输出:
1说明:
只有一个零件,参数为 100。
该零件必须单独构成一个批次,且该批次显然满足任何 约束。最小批次数即为 1。