#P15281. [MCO 2024] Max Partition

    ID: 15303 远端评测题 2500ms 256MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>2024Special JudgeMCC/MCO(马来西亚)

[MCO 2024] Max Partition

说明

:::epigraph 从炮火中逃脱后,巨龙 Evirir 已精疲力竭,这次写不出花絮了。 :::

给定一个正整数 MM。有两个非负整数列表 A0A_0A1A_1,列表中的所有整数都在 00MM(包含端点)之间。

你可以执行零次或多次以下操作:

  • 选择一个列表 AiA_ii=0i = 011),并选择 AiA_i 中的一个整数 xx。从 AiA_i 中移除(一个)xx,并向 A1iA_{1-i}(即另一个列表)中插入(一个)MxM-x

此外,在全部操作结束后,A0A_0A1A_1 必须非空。 列表在操作过程中可以变为空,但在 全部 操作结束后,两个列表都必须非空。

你想知道是否可以通过执行这些操作,使得每个列表中的最大值都等于某个特定值。你还想知道,如果添加或删除整数,答案是否会改变。

按顺序处理 QQ 个查询,每个查询为以下形式之一:

  • 类型 1 查询1 i x1\ i\ x
    • AiA_i 中添加(一个)xx
  • 类型 2 查询2 i x2\ i\ x
    • AiA_i 中移除(一个)xx
  • 类型 3 查询3 c0 c13\ c_0\ c_1
    • 回答下列问题:是否可以在执行零次或多次操作1^1后,使得 max(A0)=c0\max(A_0) = c_0max(A1)=c1\max(A_1) = c_1?在一行中输出 YES\tt{YES}NO\tt{NO}

注意:对于类型 3 查询,你 实际上并不执行任何操作;你只需判断是否可能。

1^1这里,max(Ai)\max(A_i) 表示 AiA_i 中最大的整数。

输入格式

输入的第一行包含三个以空格分隔的整数 N0N_0N1N_1MM0N0,N121050 \le N_0, N_1 \le 2 \cdot 10^5N0+N12105N_0 + N_1 \le 2 \cdot 10^50M1090 \le M \le 10^9),其中 N0N_0N1N_1 分别是 A0A_0A1A_1 的长度。

第二行包含 N0N_0 个整数,即 A0A_0 的元素。对于 A0A_0 中的每个整数 xx,有 0xM0 \le x \le M。若 N0=0N_0 = 0,则该行为空行。

第三行包含 N1N_1 个整数,即 A1A_1 的元素。对于 A1A_1 中的每个整数 xx,有 0xM0 \le x \le M。若 N1=0N_1 = 0,则该行为空行。

第四行包含一个整数 QQ1Q21051 \le Q \le 2 \cdot 10^5),表示查询的数量。

接下来的 QQ 行按顺序包含查询。每个查询由三个以空格分隔的整数组成,为以下形式之一:

  • 1 i x1\ i\ xi=0i = 0110xM0 \le x \le M
  • 2 i x2\ i\ xi=0i = 0110xM0 \le x \le M
    • 保证在执行此查询时,AiA_i 中包含 xx
  • 3 c0 c13\ c_0\ c_10c0,c1M0 \le c_0, c_1 \le M
    • 保证在执行此查询时,A0A_0A1A_1 中的整数总数至少为 22

保证至少有一个类型 3 查询。

输出格式

对于按顺序给出的每个类型 3 查询,如果答案为是,则在一行中输出 YES\tt{YES},否则输出 NO\tt{NO}

你可以以任意大小写输出 YES\tt{YES}NO\tt{NO} 中的每个字母。例如,yes\tt{yes}yEs\tt{yEs} 将被视为 YES\tt{YES}no\tt{no}No\tt{No} 将被视为 NO\tt{NO}

5 4 10
3 4 6 7 0
1 3 7 8
11
3 7 3
3 0 1
3 6 9
3 4 4
3 7 8
2 1 3
1 0 5
1 1 2
3 4 4
3 0 10
3 7 5
YES
NO
NO
YES
YES
NO
NO
YES
10 0 8
2 2 3 3 3 1 5 5 5 6
4
3 2 6
3 6 2
3 5 3
3 3 5
YES
NO
YES
YES
0 0 10
5
1 1 4
1 1 6
2 1 4
1 0 4
3 4 6
YES

提示

注释

示例 1

对于第一个查询(373\tt{3 7 3}),我们可以执行以下操作:

  • A1A_1 中选择 8:从 A1A_1 中移除 8,并向 A0A_0 中插入 108=210 - 8 = 2
  • A1A_1 中选择 7:从 A1A_1 中移除 8,并向 A0A_0 中插入 107=310 - 7 = 3

操作后得到 A0=[3,4,6,7,0,2,3]A_0 = [3, 4, 6, 7, 0, 2, 3]A1=[1,3]A_1 = [1, 3]A0A_0A1A_1 中的最大元素分别如愿变为 7 和 3,因此答案为 YES\tt{YES}

对于第四个查询(344\tt{3 4 4}),我们可以对 A0A_0 中的 6 和 7,以及 A1A_1 中的 7 和 8 进行操作。操作后得到 A0=[3,4,0,3,2]A_0 = [3, 4, 0, 3, 2]A1=[1,3,4,3]A_1 = [1, 3, 4, 3]

对于第五个查询(378\tt{3 7 8}),A0A_0A1A_1 中的最大元素已经是 7 和 8,因此无需操作。

在第六个查询(213\tt{2 1 3})之后,A1=[1,7,8]A_1 = [1, 7, 8]。在第七和第八个查询(105\tt{1 0 5}112\tt{1 1 2})之后,A0=[3,4,6,7,0,5]A_0 = [3, 4, 6, 7, 0, 5]A1=[1,7,8,2]A_1 = [1, 7, 8, 2]

示例 2

此示例满足子任务 1 和子任务 2 的约束。对于第一个查询,我们可以移除 A0A_0 中的一个 2,并向 A1A_1 中插入 82=68 - 2 = 6

示例 3

注意,初始时两个列表都可以为空。

计分

子任务 11717 分): N0,M,Q100N_0, M, Q \le 100N1=0N_1 = 0。所有查询均为类型 3 查询,且满足 c0=Mc1c_0 = M - c_1

子任务 299 分): N1=0N_1 = 0。所有查询均为类型 3 查询,且满足 c0=Mc1c_0 = M - c_1

子任务 31414 分): M2M \le 2。所有查询均为类型 3 查询。

子任务 42828 分): N0+N12000N_0 + N_1 \le 2000Q2000Q \le 2000。所有查询均为类型 3 查询。

子任务 52121 分): 所有查询均为类型 3 查询。

子任务 61111 分): 无额外限制。

翻译由 DeepSeek 完成