#P12489. [OOI 2025] Alice, Bob, and two arrays

[OOI 2025] Alice, Bob, and two arrays

题目描述

给定一个长度为 NN 的数组 aa 和一个长度为 MM 的数组 bb。数组中的所有数字都是整数,且范围在 11kk 之间。还有一个初始为空的数组 cc

Alice 和 Bob 在这些数组上玩以下游戏:玩家轮流进行,轮到某个玩家时,他必须在数组 cc 的末尾追加一个数字,使得 cc 仍然是 aabb 共同的子序列。无法进行移动的玩家失败。Alice 先手。

他们将进行 qq 次游戏。对于第 ii 场游戏,他们会选择两个数 xix_iyiy_i0xi<N0yi<M0 \le x_i < N,0 \le y_i < M),然后从数组 aa 中移除前 xix_i 个元素,从数组 bb 中移除前 yiy_i 个元素,接着在得到的数组上进行游戏。每次删除操作之后、下一次操作之前,数组 aabb 会恢复到它们的初始状态,这意味着在一场游戏中从数组中删除的数字可能不会在后续游戏中被删除。此外,数组 cc 在两场游戏之间会被清空。

这两个人有他们的怪癖,所以他们总是以这样的方式选择 xix_iyiy_i:在删除之后,数组 aabb 的剩余部分以相同的值开头

Alice 非常想赢,所以她请你判断对于每场游戏,假设双方都进行最优策略,她是否能赢。

注意,数组可能非常长,因此它们以特殊格式给出。每个数组都表示为由等值数字组成的段的序列。数组 aann 个这样的段组成,数组 bbmm 个这样的段组成。每个段由其长度和该段中的数字定义。

输入格式

第一行包含六个整数 NnMmkqN、n、M、m、k、q($1 \le N, M \le 10^9,1 \le n, m, k \le 1600,1 \le q \le 10^6$)—— 分别是第一个数组的长度、第一个数组中的段数、第二个数组的长度、第二个数组中的段数、数值上限和游戏次数。

接下来的 nn 行,每行包含两个整数 lial_i^aviav_i^a1liaN1viak1 \le l_i^a \le N,1 \le v_i^a \le k)—— 该段的长度和该段中的数字。这些数字定义了数组 aa:数组 aa 的前 l1al_1^a 个数等于 v1av_1^a,接下来的 l2al_2^a 个数等于 v2av_2^a,……,最后 lnal_n^a 个数等于 vnav_n^a

接下来的 mm 行,每行包含两个整数 libl_i^bvibv_i^b1libN1vibk1 \le l_i^b \le N,1 \le v_i^b \le k)—— 该段的长度和该段中的数字。这些数字定义了数组 bb。格式与数组 aa 类似。保证 lia=N\sum l_i^a = Nlib=M\sum l_i^b = Mviavi+1av_i^a \ne v_{i+1}^avibvi+1bv_i^b \ne v_{i+1}^b

接下来的 qq 行包含整数对 xix_iyiy_i0xi<N0yi<M0 \le x_i < N,0 \le y_i < M)—— 游戏的描述。

对于每场游戏 ii,保证如果我们从 aa 中移除前 xix_i 个元素,并从 bb 中移除前 yiy_i 个元素,则数组的剩余部分将以相同的值开头。

输出格式

对于 qq 场游戏中的每一场,如果 Alice 在最优策略下获胜,则打印 Yes,如果 Bob 获胜,则打印 No

输入输出样例 #1

输入 #1

5 1 5 1 1 9
5 1
5 1
0 0
0 1
0 2
1 0
1 1
1 2
2 0
2 1
2 2

输出 #1

Yes
No
Yes
No
No
Yes
Yes
Yes
Yes

输入输出样例 #2

输入 #2

7 3 7 3 2 12
2 1
3 2
2 1
2 2
3 1
2 2
0 2
0 3
0 4
1 2
1 3
1 4
2 5
2 6
3 5
3 6
4 5
4 6

输出 #2

Yes
No
Yes
Yes
No
Yes
No
Yes
No
Yes
Yes
Yes

说明/提示

样例解释

在第一个示例中,数组看起来像这样:a=(1,1,1,1,1)a = (1, 1, 1, 1, 1)b=(1,1,1,1,1)b = (1, 1, 1, 1, 1)

  • 在第一个查询中,x=0y=0x = 0,y = 0,因此游戏将在数组 a=(1,1,1,1,1)a = (1, 1, 1, 1, 1)b=(1,1,1,1,1)b = (1, 1, 1, 1, 1) 上进行。在这种情况下,玩家只能将数字 11 追加到数组 cc 中,因此 5 步之后游戏将结束,Bob 将会失败,因为他无法再进行移动。
  • 在第二个查询中,x=0y=1x = 0,y = 1,因此游戏将在数组 a=(1,1,1,1,1)a = (1, 1, 1, 1, 1)b=(1,1,1,1)b = (1, 1, 1, 1) 上进行。在这种情况下,游戏将在 4 步之后结束,Alice 将会失败。
  • 在最后一个查询中,x=2y=2x = 2,y = 2,因此游戏将在数组 a=(1,1,1)a = (1, 1, 1)b=(1,1,1)b = (1, 1, 1) 上进行。在这种情况下,Bob 将会失败。

在第二个示例中,a=(1,1,2,2,2,1,1)a = (1, 1, 2, 2, 2, 1, 1)b=(2,2,1,1,1,2,2)b = (2, 2, 1, 1, 1, 2, 2)

  • 在第一个查询中,x=0x = 0y=2y = 2,因此游戏将在数组 a=(1,1,2,2,2,1,1)a = (1, 1, 2, 2, 2, 1, 1)b=(1,1,1,2,2)b = (1, 1, 1, 2, 2) 上进行。如果 Alice 将数字 22 追加到数组 cc 中,Bob 也会追加数字 22,然后就没有移动机会了,所以 Alice 会失败。因此,Alice 必须首先将数字 11 追加到 cc。此后,出于类似的原因,如果 Bob 将数字 22 追加到数组中,他将会失败。所以,他被迫追加数字 11,数组 cc 变为 (1,1)(1, 1)。然后 Alice 再次将数字 11 追加到数组 cc 中,Bob 没有更多移动机会了,所以 Alice 获胜。
  • 在第二个查询中,x=0x = 0y=3y = 3,因此游戏将在数组 a=(1,1,2,2,2,1,1)a = (1, 1, 2, 2, 2, 1, 1)b=(1,1,1,2,2)b = (1, 1, 1, 2, 2) 上进行。根据上一个示例的推理,Alice 不能将数字 22 追加到数组 cc 中,因为那样她会失败。但是如果 Alice 追加数字 11,那么 Bob 也会追加数字 11,之后,Alice 会因为类似的原因而失败。因此,在这种情况下 Bob 获胜。

评分

本题的测试点包含十一个分组。每个分组的分数只有在该分组的所有测试点以及所有依赖分组的测试点都通过时才能获得。请注意,通过样例测试点对于某些分组不是必需的。Offline-evaluation 表示该分组的测试结果将在比赛结束后才可查看。

Subtask 分数 额外限制 依赖组别 说明
N,MN, M n,mn, m qq
0 - - - 样例。
1 13 N,M300N, M \le 300 q105q \le 10^5 0
2 12 N,M5000N, M \le 5000 0, 1
3 11 - - lia1000l_i^a \le 1000 且所有 viav_i^a 不同,lib1000l_i^b \le 1000 且所有 vibv_i^b 不同
4 8 3 lia1000l_i^a \le 1000 且所有 viav_i^a 不同
5 10 - l1aN500l_1^a \ge N - 500v1a=1v_1^a = 1l1bM500l_1^b \ge M - 500v1b=1v_1^b = 1
6 7 N,M105N, M \le 10^5 n,m100n, m \le 100 k5k \le 5
7 6 0, 6 k50k \le 50
8 7 - 0, 6, 7
9 n,m800n, m \le 800 0, 6 - 8
10 - 0 - 9 Offline-evaluation。
11 7 - 0 - 10