CF1618D Array and Operations

题目描述

给定一个包含 $n$ 个整数的数组 $a$,以及另一个整数 $k$,满足 $2k \le n$。 你需要对该数组恰好进行 $k$ 次操作。每次操作,你需要选择数组中的两个元素(记为 $a_i$ 和 $a_j$,它们可以相等也可以不同,但在数组中的位置必须不同),将它们从数组中移除,并将 $\lfloor \frac{a_i}{a_j} \rfloor$ 加到你的得分上,其中 $\lfloor \frac{x}{y} \rfloor$ 表示不超过 $\frac{x}{y}$ 的最大整数。 初始时,你的得分为 $0$。在你恰好进行了 $k$ 次操作后,将数组中剩余的所有元素加到得分上。 请计算你可能获得的最小得分。

输入格式

输入的第一行包含一个整数 $t$($1 \le t \le 500$),表示测试用例的数量。 每个测试用例包含两行。第一行包含两个整数 $n$ 和 $k$($1 \le n \le 100$;$0 \le k \le \lfloor \frac{n}{2} \rfloor$)。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 2 \times 10^5$)。

输出格式

输出一个整数,表示你可能获得的最小得分。

说明/提示

我们来看样例测试。 在第一个测试用例中,一种获得分数 $2$ 的方法如下: 1. 选择 $a_7 = 1$ 和 $a_4 = 2$ 进行操作,得分变为 $0 + \lfloor \frac{1}{2} \rfloor = 0$,数组变为 $[1, 1, 1, 1, 3]$; 2. 选择 $a_1 = 1$ 和 $a_5 = 3$ 进行操作,得分变为 $0 + \lfloor \frac{1}{3} \rfloor = 0$,数组变为 $[1, 1, 1]$; 3. 选择 $a_1 = 1$ 和 $a_2 = 1$ 进行操作,得分变为 $0 + \lfloor \frac{1}{1} \rfloor = 1$,数组变为 $[1]$; 4. 将剩余的元素 $1$ 加入得分,最终得分为 $2$。 在第二个测试用例中,无论你选择怎样的操作,最终得分都是 $16$。 在第三个测试用例中,一种获得分数 $0$ 的方法如下: 1. 选择 $a_1 = 1$ 和 $a_2 = 3$ 进行操作,得分变为 $0 + \lfloor \frac{1}{3} \rfloor = 0$,数组变为 $[3, 7]$; 2. 选择 $a_1 = 3$ 和 $a_2 = 7$ 进行操作,得分变为 $0 + \lfloor \frac{3}{7} \rfloor = 0$,数组变为空; 3. 数组为空,得分不再变化。 在第四个测试用例中,无法进行任何操作,因此得分为数组元素之和:$4 + 2 = 6$。 由 ChatGPT 4.1 翻译