CF2048D Kevin and Competition Memories
题目描述
Kevin 曾经进入过 Rio 的记忆。在那段记忆中,曾举办过一系列的比赛。Kevin 还记得所有参赛者和比赛的问题,但具体的比赛轮次、问题分布和排名已经模糊不清。
有 $m$ 个比赛问题,第 $i$ 个问题的难度为 $b_i$。每场比赛选择 $k$ 个问题,因此总共会有 $\lfloor \frac{m}{k} \rfloor$ 场比赛。这意味着你可以任意组合选择这些比赛问题,并挑出总共 $\lfloor \frac{m}{k} \rfloor \cdot k$ 个问题参赛,每个问题最多只能被选一次,剩余 $m \bmod k$ 个问题将未被使用。例如,如果 $m = 17$ 且 $k = 3$,你将组织 $5$ 场比赛,每场 $3$ 个问题,会剩下 $2$ 个问题没有用上。
比赛有 $n$ 位参赛者,其中 Kevin 是第 1 位。第 $i$ 位参赛者的评分是 $a_i$。在比赛中,每个参赛者能解决难度不超过其评分的问题,具体来说,第 $i$ 位参赛者能解决第 $j$ 个问题,当且仅当 $a_i \geq b_j$。在每场比赛中,Kevin 的排名定义为那些比他解掉更多题目的参赛者数量加一。
对于每个 $k = 1, 2, \ldots, m$,Kevin 想知道在所有 $\lfloor \frac{m}{k} \rfloor$ 场比赛中的排名之和的最小可能值。也就是说,对于某个 $k$,你需要优化问题的选择和分配,使得 Kevin 的排名之和最小化。
不同的 $k$ 值代表的比赛是相互独立的。换言之,你可以对每个不同的 $k$ 值分别规划问题分配。
输入格式
输入包含多组测试数据。第一行为测试数据的组数 $t$($1 \le t \le 5 \cdot 10^4$)。
每组测试数据的第一行包含两个整数 $n$ 和 $m$($1 \le n, m \le 3 \cdot 10^5$),分别表示参赛者数量和问题数量。
接下来的行中,第二行列出 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \le a_i \le 10^9$)代表每个参赛者的评分。
第三行列出 $m$ 个整数 $b_1, b_2, \ldots, b_m$($0 \le b_i \le 10^9$)代表每个问题的难度。
保证所有测试数据中的 $n$ 与 $m$ 的总和不超过 $3 \cdot 10^5$。
输出格式
对于每组测试数据,输出 $m$ 个整数,分别代表对于每个 $k = 1, 2, \ldots, m$,Kevin 的排名之和的最小可能值。
说明/提示
考虑第一个测试数据:
- 当 $k=1$ 时,每场比赛只包含一个问题,分配方式是唯一的。例如,在包含难度为 $4$ 的第三个问题的比赛中,除了第 2 位参赛者外,所有人都能解决。因为没有人比 Kevin 解出更多的问题,他在这场比赛中排名第 1。同理,在所有 $4$ 场比赛中,Kevin 的排名分别是 $1, 3, 1, 2$,总和为 $7$。
- 当 $k=2$ 时,最佳选择是将第 1 和第 3 个问题组成一场比赛,第 2 和第 4 个问题组成另一场。在前一场比赛中,4 名选手分别解决 $2, 1, 2, 2$ 个问题,Kevin 排名第 1;在后一场比赛中,选手分别解决 $0, 0, 2, 1$ 个问题,因有 2 位选手多解题,Kevin 排名第 $3$。所以总和是 $1 + 3 = 4$。这是最优解。
- 当 $k=3$ 时,可以选择第 1、3、4 个问题组成一场比赛,Kevin 的排名是 2,为最优。
- 当 $k=4$ 时,只有一场比赛,分配方式唯一,Kevin 的排名是 3。
**本翻译由 AI 自动生成**