#435. 商品打包
商品打包
题目描述
商店收到了一批 件商品( 为偶数),第 件商品的重量为 。在销售商品之前,必须将它们打包。打包后有如下要求:
- 共会有 个包裹,每个包裹恰好包含两件商品;
- 包含第 件和第 件商品()的包裹重量为 。
每个重量为 的包裹,其售价为 布尔(向下取整),其中 是一个给定的固定值。
请将商品打包,使得销售所得的总收入最大。换句话说,就是将这 件商品分成 对,使得所有包裹的价值之和 $\sum_{i=1}^{n/2} \left\lfloor\frac{x_i}{k}\right\rfloor$ 最大,其中 表示第 个包裹的重量。
例如,设 ,商品重量 。可以按如下方式打包:
- 第一个包裹放第 3 件和第 6 件商品,重量为 ,售价为 布尔。
- 第二个包裹放第 1 件和第 5 件商品,重量为 ,售价为 布尔。
- 第三个包裹放第 2 件和第 4 件商品,重量为 ,售价为 布尔。
这种打包方式下,总售价为 布尔。
输入格式
输入的第一行包含一个整数 (),表示测试用例的数量。
接下来是每个测试用例的描述。
每个测试用例的第一行包含两个整数 ()和 ()。 保证为偶数。
每个测试用例的第二行包含恰好 个整数 ()。
保证所有测试用例中 的总和不超过 。
输出格式
对于每个测试用例,输出一行一个整数,表示所有包裹可能获得的最大总售价。
输入输出样例
6
6 3
3 2 7 1 4 8
4 3
2 1 5 6
4 12
0 0 0 0
2 1
1 1
6 10
2 0 0 5 9 4
6 5
5 3 8 6 3 2
8
4
0
2
1
5
说明/提示
第一个测试用例已在题目描述中分析。
第二个测试用例中,如果将第 1 件和第 2 件商品放在第一个包裹,将第 3 件和第 4 件商品放在第二个包裹,可以获得总售价 。
第三个测试用例中,每件商品的售价均为 ,因此总售价也为 。
由 ChatGPT 4.1 翻译