#P16851. [GKS 2021 #D] Final Exam
[GKS 2021 #D] Final Exam
题目描述
又到了算法与数据结构的期末考试时间!
Edsger 准备了 套题目。每套题目包含难度递增的题目序列;第 套可以用两个整数 和 ()描述,表示该套包含难度为 的题目。在所有题目的所有题目中,保证没有两道题目的难度相同。
本学期 Edsger 要测试 名学生。他想给每个学生恰好出一道题,题目来自他准备的某套题目中。不能有两名学生做完全相同的题目,因此当 Edsger 用某道题测试一名学生后,这道题就不能再用了。通过无数次讲课、练习和项目,Edsger 估算了第 名学生的能力水平为 ,并希望给该学生出一道难度为 的题目。不幸的是,这并不总是可行,因为 Edsger 可能没有准备该难度的题目,或者该题目之前已经被其他学生用过了。因此,Edsger 会为第 名学生选择一道难度为 的题目,使得 最小,并且该难度 的题目在第 名学生之前尚未被任何学生使用过。当存在多个最小差值时,Edsger 总是选择难度较小的题目。注意,为第 名学生选择的题目可能会影响之后所有学生的选择,因此你必须按照输入中出现的顺序处理学生。
由于跟踪所有题目可能相当复杂,你能帮助 Edsger 确定他应该给所有学生哪些题目吗?
输入格式
输入的第一行给出测试用例的数量 。接下来有 个测试用例。
每个测试用例的第一行包含两个整数 和 :分别是题目的套数和学生的数量。接下来 行描述每套题目。
这些行中的每一行包含两个整数 和 ,表示第 套题目中最容易和最难的题目难度。最后,测试用例以一行结束,该行包含 个整数 ,表示学生按测试顺序的能力水平。
输出格式
对于每个测试用例,输出一行,格式为 Case #x: P1 P2 ... PM,其中 是测试用例编号(从 开始), 是给第 名学生的题目难度。
2
5 4
1 2
6 7
9 12
24 24
41 50
14 24 24 4
1 1
42 42
24
Case #1: 12 24 11 2
Case #2: 42
提示
在样例 #1 中,有 套题目和 名学生。
- 对于第一名学生,我们寻找难度最接近其能力水平 的题目。最小差值的题目是难度 ,可以在第三套题目中找到,因此 。
- 对于第二名学生,我们寻找难度最接近其能力水平 的题目。幸运的是,我们可以在第四套题目中找到恰好为 的题目,因此 。
- 对于第三名学生,我们再次寻找难度最接近其能力水平 的题目。由于难度 已经被使用,不能再用。最接近的题目难度是 ,因为 也被用过了。因此 。
- 最后,对于第四名学生,我们寻找难度最接近其能力水平 的题目。有两个题目的差值相同: 和 。我们选择难度较小的题目,所以 。
在样例 #2 中,有 套题目和 名学生。唯一的一套题目中只有一道题,因此我们只能用这道题来测试这唯一的学生,所以 。
限制条件
。
在所有题目中,没有两道题目的难度相同。
题目总数大于等于学生人数。
测试集 1
。
。
对于所有 ,。
对于所有 ,。
测试集 2
。
。
对于所有 ,。
对于所有 ,。
翻译由 DeepSeek V4 Pro 完成