QOJ.ac

QOJ

Time Limit: 2.5 s Memory Limit: 256 MB Total points: 100 Hackable ✓

#16574. 最大划分

统计

在从枪林弹雨中逃脱之后,龙 Evirir 这次太累了,没法写背景故事了。

给定一个正整数 $M$。有两个由非负整数组成的列表 $A_0$ 和 $A_1$,并且列表中的所有整数都在 $0$ 到 $M$(包含)之间。

你可以进行若干次(可以为零次)如下操作:

  • 选择一个列表 $A_i$($i = 0$ 或 $1$),并从中选择一个整数 $x$。从 $A_i$ 中删除(一个)$x$,并将(一个)$M - x$ 插入到 $A_{1-i}$(即另一个列表)中。

此外,在所有操作结束后,$A_0$ 和 $A_1$ 必须都非空。某个列表在操作过程中可以变为空,但在所有操作结束后,两个列表都必须非空。

你想知道是否可以通过上述操作,使得两个列表中的最大值分别等于指定的值。你还想知道,在进行插入或删除整数后,答案是否会发生变化。

按顺序处理 $Q$ 个询问,每个询问属于以下三种类型之一:

  • 类型 1:1 i x
    • 向 $A_i$ 中添加(一个)$x$。
  • 类型 2:2 i x
    • 从 $A_i$ 中删除(一个)$x$。
  • 类型 3:3 c_0 c_1
    • 回答问题:是否可以通过进行若干次操作$^1$,使得 $\max(A_0) = c_0$ 且 $\max(A_1) = c_1$?
    • 输出 YESNO

注意:对于类型 3 的询问,你不需要真的执行任何操作,只需判断是否存在可行方案。

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

输入格式

第一行包含三个用空格分隔的整数 $N_0$、$N_1$ 和 $M$ ($0 \le N_0, N_1 \le 2 \cdot 10^5$,$N_0 + N_1 \le 2 \cdot 10^5$,$0 \le M \le 10^9$),其中 $N_0$ 和 $N_1$ 分别表示 $A_0$ 和 $A_1$ 的长度。

第二行包含 $N_0$ 个整数,表示 $A_0$ 的元素。对于每个整数 $x$,满足 $0 \le x \le M$。如果 $N_0 = 0$,则该行为空行。

第三行包含 $N_1$ 个整数,表示 $A_1$ 的元素。对于每个整数 $x$,满足 $0 \le x \le M$。如果 $N_1 = 0$,则该行为空行。

第四行包含一个整数 $Q$($1 \le Q \le 2 \cdot 10^5$),表示询问数量。

接下来 $Q$ 行,每行包含三个用空格分隔的整数,表示一个询问,形式如下之一:

  • 1 i x($i = 0$ 或 $1$,$0 \le x \le M$)
  • 2 i x($i = 0$ 或 $1$,$0 \le x \le M$)
    保证在该询问给出时,$A_i$ 中一定包含 $x$。
  • 3 c_0 c_1($0 \le c_0, c_1 \le M$)
    保证在该询问给出时,$A_0$ 和 $A_1$ 中的整数总数至少为 $2$。

保证至少存在一个类型 3 的询问。

输出格式

对于每个类型 3 的询问,按照给定顺序输出答案:

  • 如果答案为是,输出一行 YES
  • 否则输出一行 NO

YESNO 的大小写不限。例如,yesyEs 会被视为 YESnoNo 会被视为 NO

子任务

  • 子任务 1(17 分):$N_0, M, Q \le 100$,$N_1 = 0$。所有询问均为类型 3,且满足 $c_0 = M - c_1$。
  • 子任务 2(9 分):$N_1 = 0$。所有询问均为类型 3,且满足 $c_0 = M - c_1$。
  • 子任务 3(14 分):$M \le 2$。所有询问均为类型 3。
  • 子任务 4(28 分):$N_0 + N_1 \le 2000$,$Q \le 2000$。所有询问均为类型 3。
  • 子任务 5(21 分):所有询问均为类型 3。
  • 子任务 6(11 分):无额外限制。

样例数据

样例 1

standard input

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

standard output

YES
NO
NO
YES
YES
NO
NO
YES

样例 2

standard input

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

standard output

YES
NO
YES
YES

样例 3

standard input

0 0 10
5
1 1 4
1 1 6
2 1 4
1 0 4
3 4 6

standard output

YES

说明

样例 1

对于第一个询问 3 7 3,可以进行如下操作:

  • 从 $A_1$ 中选择 $8$:删除 $8$,并向 $A_0$ 插入 $10 - 8 = 2$;
  • 从 $A_1$ 中选择 $7$:删除 $7$,并向 $A_0$ 插入 $10 - 7 = 3$。

此时
$A_0 = [3, 4, 6, 7, 0, 2, 3]$,
$A_1 = [1, 3]$。

此时 $A_0$ 和 $A_1$ 的最大值分别为 $7$ 和 $3$,满足要求,因此答案为 YES

对于第四个询问 3 4 4,可以对 $A_0$ 中的 $6$ 和 $7$,以及 $A_1$ 中的 $7$ 和 $8$ 进行操作。结果为:

$A_0 = [3, 4, 0, 3, 2]$,
$A_1 = [1, 3, 4, 3]$。

对于第五个询问 3 7 8,此时 $A_0$ 和 $A_1$ 的最大值已经分别为 $7$ 和 $8$,无需操作。

在第六个询问 2 1 3 之后,$A_1 = [1, 7, 8]$。
在第七和第八个询问(1 0 51 1 2)之后:

$A_0 = [3, 4, 6, 7, 0, 5]$,
$A_1 = [1, 7, 8, 2]$。

样例 2

该样例满足子任务 1 和 2 的限制。对于第一个询问,可以从 $A_0$ 中删除一个 $2$,并向 $A_1$ 插入 $8 - 2 = 6$。

样例 3

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

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.