#P14868. [OOI2024 资格赛]Hard problem难题
[OOI2024 资格赛]Hard problem难题
题目描述
Gena 非常喜欢解决复杂的程序设计题。最近,他整理了一个包含 道题的题单,准备逐步解决。题目的难度分别为 ,并且任意两道题的难度都不同。
Gena 是一名经验丰富的程序员,可以解决任意难度的题。他每天按照固定策略解题。
对于每一天,Gena 有一个参数 ,表示他当天愿意解决的题目的最低难度。每天,他都会从题单第一题开始到最后一题依次检查每道题,并执行如下操作:
- 如果当前题已经解决过,则跳过;
- 如果当前题难度小于 ,则跳过;
- 如果前两条都不满足,并且他当天还没有解决任何题,则解决当前题;
- 如果前两条都不满足,并且他当天最后解决的题比当前题更简单,则解决当前题;
- 如果以上条件都不满足,则跳过当前题。
换句话说,Gena 每天会按题单顺序扫描,并且当天解决的题目难度严格递增,同时只会解决尚未解决且难度至少为 的题。
第一天,他愿意解决的最低难度为 。之后每天,这个最低难度会减少 。因此第 天(从 开始),Gena 愿意解决难度至少为
的题。Gena 会每天重复上述算法,直到解决所有题目。
Lesha 观察 Gena 很久了,他想了解 Gena 的解题策略。于是他有 个询问。对于每个询问,需要判断:是否可以重新排列 Gena 的题单,使得难度为 的题恰好成为所有天累计解决顺序中的第 道题。
注意,每个询问相互独立。不同询问中可以使用不同的题目排列顺序。
输入格式
第一行包含三个整数 (,),分别表示题目数量、第一天的最低难度、最低难度每天减少的数值。
第二行包含 个互不相同的整数 (,),表示题目难度。难度按递增顺序给出。
第三行包含一个整数 (),表示询问数量。
接下来 行,每行包含两个整数 (),表示询问:是否可以通过重新排列题单,使难度为 的题成为第 个被解决的题。保证每次询问中的 一定出现在题单中。
输出格式
对于每个询问,如果存在满足条件的题单排列,输出 Yes;否则输出 No。
样例 #1
样例输入 #1
5 10 2
4 5 9 10 12
5
10 2
10 3
10 4
5 5
12 2
样例输出 #1
Yes
Yes
No
Yes
Yes
样例 #2
样例输入 #2
7 4 2
2 3 5 6 9 10 11
4
5 6
11 7
2 2
10 7
样例输出 #2
Yes
No
Yes
Yes
样例解释
考虑第一个样例。对于第二个询问,可以把题目重排为:
12 4 5 9 10
Gena 的解题过程如下:
- 第一天,最低难度 。题单第一题满足条件,Gena 立刻解决难度为 的题。剩下的题中有一道难度为 的题,但由于当天已经解决过难度 的题,而 ,所以他会跳过难度 的题。因此第一天结束时,他只解决了难度为 的题。
- 第二天,最低难度 。扫描题单时,他会跳过已解决的 ,也会跳过难度小于 的 。然后遇到难度 的题,因为当天还没有解题,所以解决它。下一题难度为 ,且 ,所以也会解决。因此前两天后,他按顺序解决了 。
- 第三天,最低难度为 ,但所有难度至少为 的题都已经解决,所以这一天不解决任何题。
- 第四天,Gena 解决剩下的题。最终所有天累计的解题顺序为 。
在这个排列下,难度为 的题恰好是累计解决顺序中的第 道题,因此第二个询问答案为 Yes。
评分方式
测试数据包含 8 个测试组。只有通过该组以及若干指定的前置测试组,才能获得该组分数。
| 组别 | 分数 | 附加限制 | 附加限制 | 附加限制 | 附加限制 | 依赖组 | 备注 |
|---|---|---|---|---|---|---|---|
| 0 | - | - | - | - | 样例 | ||
| 1 | 13 | - | |||||
| 2 | 10 | - | - | 0,1 | |||
| 3 | 14 | ||||||
| 4 | 19 | - | 0-3 | ||||
| 5 | 9 | - | - | ||||
| 6 | 1 | - | |||||
| 7 | 9 | - | |||||
| 8 | 25 | 0-7 | - | ||||