CF1690E Price Maximization

题目描述

商店收到了一批 $n$ 件商品($n$ 为偶数),第 $i$ 件商品的重量为 $a_i$。在销售商品之前,必须将它们打包。打包后有如下要求: - 共会有 $\frac{n}{2}$ 个包裹,每个包裹恰好包含两件商品; - 包含第 $i$ 件和第 $j$ 件商品($1 \le i, j \le n$)的包裹重量为 $a_i + a_j$。 每个重量为 $x$ 的包裹,其售价为 $\left\lfloor\frac{x}{k}\right\rfloor$ 布尔(向下取整),其中 $k$ 是一个给定的固定值。 请将商品打包,使得销售所得的总收入最大。换句话说,就是将这 $n$ 件商品分成 $\frac{n}{2}$ 对,使得所有包裹的价值之和 $\sum_{i=1}^{n/2} \left\lfloor\frac{x_i}{k}\right\rfloor$ 最大,其中 $x_i$ 表示第 $i$ 个包裹的重量。 例如,设 $n = 6, k = 3$,商品重量 $a = [3, 2, 7, 1, 4, 8]$。可以按如下方式打包: - 第一个包裹放第 3 件和第 6 件商品,重量为 $a_3 + a_6 = 7 + 8 = 15$,售价为 $\left\lfloor\frac{15}{3}\right\rfloor = 5$ 布尔。 - 第二个包裹放第 1 件和第 5 件商品,重量为 $a_1 + a_5 = 3 + 4 = 7$,售价为 $\left\lfloor\frac{7}{3}\right\rfloor = 2$ 布尔。 - 第三个包裹放第 2 件和第 4 件商品,重量为 $a_2 + a_4 = 2 + 1 = 3$,售价为 $\left\lfloor\frac{3}{3}\right\rfloor = 1$ 布尔。 这种打包方式下,总售价为 $5 + 2 + 1 = 8$ 布尔。

输入格式

输入的第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。 接下来是每个测试用例的描述。 每个测试用例的第一行包含两个整数 $n$($2 \le n \le 2\cdot10^5$)和 $k$($1 \le k \le 1000$)。$n$ 保证为偶数。 每个测试用例的第二行包含恰好 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \le a_i \le 10^9$)。 保证所有测试用例中 $n$ 的总和不超过 $2\cdot10^5$。

输出格式

对于每个测试用例,输出一行一个整数,表示所有包裹可能获得的最大总售价。

说明/提示

第一个测试用例已在题目描述中分析。 第二个测试用例中,如果将第 1 件和第 2 件商品放在第一个包裹,将第 3 件和第 4 件商品放在第二个包裹,可以获得总售价 $4$。 第三个测试用例中,每件商品的售价均为 $0$,因此总售价也为 $0$。 由 ChatGPT 4.1 翻译