CF2229F Load Unbalancing

题目描述

请注意本题运行时间限制非常低。 给定一个长度为 $n$ 的序列 $a$,以及一个整数 $k$。 你可以先随意重新排序序列 $a$ 的元素。之后,定义 $f(a)$ 的过程如下: - 令 $b$ 为一个长度为 $k$ 的数组,初始值全部为零。 - 依次对于每一个 $1 \le i \le n$,将 $a_i$ 加到 $b$ 中的任意一个最小元素上。 - 完成上述过程后,$f(a) = \max(b)$。 请你求出在所有 $a$ 的排列方式中,$f(a)$ 的最大可能值。

输入格式

每个测试点包含多个测试用例。第一行为测试用例个数 $t$($1 \le t \le 10^4$)。接下来是各个测试用例的描述。 每个测试用例的第一行包含两个整数 $n$ 和 $k$($1 \le k \le n \le 18$)。 每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^9$)。 保证所有测试用例的 $2^n$ 之和不超过 $2^{18}$。

输出格式

对于每个测试用例,输出一个整数,即所有排列方式下 $f(a)$ 能取得的最大值。

说明/提示

在第二个样例的第一个测试用例中,一种最优的 $a$ 排列方式为 $[1, 4, 2, 5]$。具体计算 $f(a)$ 的过程如下: | $i$ | $a_i$ | $b$| |:---:|:---:|:---:| |$ - $|$ - $|$ [0, 0] $| |$ 1 $|$ 1 $|$ [1, 0] $| |$ 2 $|$ 4 $|$ [1, 4] $| |$ 3 $|$ 2 $|$ [3, 4] $| |$ 4 $|$ 5 $|$ [8, 4] $| 此时 $f(a) = \max([8,4]) = 8$。可以证明最大 $f(a)$ 为 $8$。 在第二个样例的第三个测试用例中,一种最优的 $a$ 排列方式为 $[3, 1, 2, 3, 5, 4, 3, 4]$。 由 ChatGPT 5 翻译