CF2048D.Kevin and Competition Memories
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Kevin 曾经进入过 Rio 的记忆。在那段记忆中,曾举办过一系列的比赛。Kevin 还记得所有参赛者和比赛的问题,但具体的比赛轮次、问题分布和排名已经模糊不清。
有 m 个比赛问题,第 i 个问题的难度为 bi。每场比赛选择 k 个问题,因此总共会有 ⌊km⌋ 场比赛。这意味着你可以任意组合选择这些比赛问题,并挑出总共 ⌊km⌋⋅k 个问题参赛,每个问题最多只能被选一次,剩余 mmodk 个问题将未被使用。例如,如果 m=17 且 k=3,你将组织 5 场比赛,每场 3 个问题,会剩下 2 个问题没有用上。
比赛有 n 位参赛者,其中 Kevin 是第 1 位。第 i 位参赛者的评分是 ai。在比赛中,每个参赛者能解决难度不超过其评分的问题,具体来说,第 i 位参赛者能解决第 j 个问题,当且仅当 ai≥bj。在每场比赛中,Kevin 的排名定义为那些比他解掉更多题目的参赛者数量加一。
对于每个 k=1,2,…,m,Kevin 想知道在所有 ⌊km⌋ 场比赛中的排名之和的最小可能值。也就是说,对于某个 k,你需要优化问题的选择和分配,使得 Kevin 的排名之和最小化。
不同的 k 值代表的比赛是相互独立的。换言之,你可以对每个不同的 k 值分别规划问题分配。
输入格式
输入包含多组测试数据。第一行为测试数据的组数 t(1≤t≤5⋅104)。
每组测试数据的第一行包含两个整数 n 和 m(1≤n,m≤3⋅105),分别表示参赛者数量和问题数量。
接下来的行中,第二行列出 n 个整数 a1,a2,…,an(0≤ai≤109)代表每个参赛者的评分。
第三行列出 m 个整数 b1,b2,…,bm(0≤bi≤109)代表每个问题的难度。
保证所有测试数据中的 n 与 m 的总和不超过 3⋅105。
输出格式
对于每组测试数据,输出 m 个整数,分别代表对于每个 k=1,2,…,m,Kevin 的排名之和的最小可能值。
输入输出样例
输入#1
4 4 4 4 3 7 5 2 5 4 6 5 5 5 0 4 8 6 1 3 9 2 7 6 7 1 1 4 5 1 4 1 9 1 9 8 1 0 7 6 1 9 1 9 8 1 0 1 1 4 5 1 4
输出#1
7 4 2 3 6 2 1 1 2 7 3 2 1 1 1 1 15 9 5 4 4 4
说明/提示
考虑第一个测试数据:
-
当 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 自动生成
输入解题思路,AI测评打分。不知道怎么写?