#P8473. [Aya Round 1 H] 破碎的历史

    ID: 7569 远端评测题 3000ms 512MiB 尝试: 0 已通过: 0 难度: 4 上传者: 标签>线段树二分洛谷原创Special JudgeO2优化洛谷月赛

[Aya Round 1 H] 破碎的历史

题目背景

幻想乡迎来了它的毁灭,幻想的载体也已经遁入了幻想。

所幸的是,幻想乡中的乡民们还侥幸存活着,她们在尝试恢复幻想乡的历史。然而历史之中的大大小小的事情不计其数,人们只能记得起一些大事情罢了。

或许,根据那些重要的事情,可以把次要的事件推导出来呢?

题目描述

数轴的正半轴上有 nn 个互不相同的被黑白染色的特殊整点,位置从左到右依次为 p1,p2,,pnp_1,p_2,\cdots,p_n。维护初始为空的可重线段集合 SS

qq 次操作。操作分若干种,具体格式如下:

  • 1 l r:将所有满足 lxyrl \le x \le y \le r 且两端点均为特殊整点的线段 [x,y][x,y] 加入 SS
  • 2 x:撤回第 xx 次操作添加的线段。

在初始时和每次操作后,假设你可以进行任意次(可以是零次)染色。每次从 SS 中选出一条线段 [x,y][x,y],满足位于点 xx 和点 yy 的特殊整点均为黑色,然后将所有在线段内的白色特殊整点染黑。试判断是否存在至少一种合法染色方式使得正半轴上的所有特殊整点均被染黑(即,不存在白色特殊整点)。注意:所有的询问均为「假设」,即各组询问之间独立,不会造成对数轴的实际修改。

输入格式

  • 第一行输入两个整数 n,qn,q
  • 第二行输入 nn 个整数 p1,p2,,pnp_1,p_2,\cdots,p_n,表示 nn 个特殊整点从左到右的位置。
  • 第三行输入 nn 个整数 a1,a2,,ana_1,a_2,\cdots,a_n,表示特殊整点的颜色。其中 ai=0a_i=0 表示白色,ai=1a_i=1 表示黑色。
  • 接下来 qq 行,每行二至三个整数,表示一次操作。

输出格式

  • 输出共 (q+1)(q+1) 行。
  • 在初始时和每次操作后,输出一行一个字符串:
    • yes 代表存在合法染色方式。
    • no 代表不存在合法染色方式。
  • 你可以输出字符串的任意大小写形式。例如:字符串 yesYesYES 均会被视为表示存在合法染色方式。
6 3
1 2 3 5 8 13
1 0 0 1 0 1
1 5 10
1 1 15
2 2

No
No
Yes
No

提示

样例解释

六个特殊点的位置/颜色在数轴正半轴上如图所示。

容易发现,并非所有点都是黑点。因此在进行操作前,输出 NO\verb!NO!

第一次操作后,一共往 SS 加入了三条线段:[5,5],[8,8],[5,8][5,5],[8,8],[5,8](图中省略了端点重叠的线段)。容易发现,此时无法进行任何操作,因此没法将所有点变成黑点。输出 NO\verb!NO!

第二次操作后,又往 SS 中加入了 2020 条线段。除去端点重叠的选段,在 SS 中如图所示。(以示区别,上一次操作加入的边标成了深蓝色)。

可以找出一种方案,将图上所有特殊点变成黑点。具体而言,首先选择 SS[1,5][1,5] 线段(容易发现位于 1155 的特殊点均为黑点,因此可以进行染色),那么可以把位于 2233 的点染色。

此时又可以选择 SS[3,13][3,13] 线段(在上一轮操作中,33 号点变为了黑点,因此 [3,13][3,13] 符合条件),将点 88 染为黑色。

此时所有点都为黑色,因此输出 YES\verb!YES!。再次强调,询问之间互相独立,且只是询问是否存在染色方案,而不会对特殊整点进行实际上的染色操作。

第三个操作撤回了第二个操作往 SS 里加入的所有线段。因此退回到了只有第一个操作的情况。不存在一种方案将所有点染黑,因此输出 NO\verb!NO!

数据范围

对于所有数据,1n,q5×1051 \le n,q \le 5 \times 10^5ai{0,1}a_i \in \{0,1\}1l<r1091 \le l< r \le 10^91pi1091 \le p_i \le 10^9。保证 pip_i 单调递增,22 操作撤销的只会是 11 操作,且每个操作最多被撤销一次。