CF1641C Anonymity Is Important
题目描述
在医生的工作中,保持客户和检测结果的匿名性非常重要。检测结果会通过电子邮件单独发送给每个人,但人们都很不耐烦,他们希望立刻知道结果。
因此,在“De-vitro”检测实验室,医生们想出了一个实验性的结果告知方式。假设有 $n$ 个人按顺序排队做检测。那么,首席医生 Sam 可以发表若干声明,每次声明会告知队列中第 $l$ 到第 $r$ 个人(包含两端)中是否存在病人,对于某些 $l$ 和 $r$ 的取值。
在此过程中,Sam 会检查这种方案的效果,并且关心是否可以通过他公布的信息推断出第 $i$ 个人的检测结果。如果可以推断出来,那么这个人到底是病人还是健康的。
请帮助 Sam 检验他的方案。
输入格式
第一行包含两个整数 $n$ 和 $q$($1 \le n, q \le 2 \cdot 10^5$),分别表示人数和询问数。
接下来的 $q$ 行,每行描述一个询问。每行的第一个数字是 $t$($t = 0$ 或 $t = 1$),表示询问类型。
如果 $t = 0$,该行还包含三个整数 $l, r, x$($1 \le l \le r \le n$,$x = 0$ 或 $x = 1$)。这个询问表示 Sam 声明队列中第 $l$ 到第 $r$ 个人(包含两端):
- 如果 $x=1$,则至少有一个人生病;
- 如果 $x=0$,则没有人生病。
如果 $t = 1$,该行还包含一个整数 $j$($1 \le j \le n$),表示 Sam 想知道队列中第 $j$ 个人的状态。
所有询问都是合法的,即总存在一个长度为 $n$ 的队列,使得所有 Sam 的声明($t=0$ 的询问)都成立。
输出格式
对于每个 Sam 的提问($t=1$ 的询问),输出一行:
- 如果该患者一定不是病人,输出 "NO";
- 如果该患者一定是病人,输出 "YES";
- 如果无法确定该患者的状态,输出 "N/A"。
说明/提示
对于第一个测试点的前五个询问:
1. Sam 首先声明第 $4$、$5$ 个人不是病人。
2. 接下来 Sam 询问第 $5$ 个人的状态。根据上一条声明,可以确定该人一定不是病人。
3. 再下一条 Sam 询问第 $6$ 个人的状态。此时我们还无法确定该人的信息。
4. 然后 Sam 声明第 $4$、$5$、$6$ 个人中至少有一个人生病。
5. 最后 Sam 询问第 $6$ 个人的状态。现在可以确定该人一定是病人。
由 ChatGPT 4.1 翻译