#P17171. 数轴上的染色翻转怎么还有恢复与加密

数轴上的染色翻转怎么还有恢复与加密

1011. 数轴上的染色翻转怎么还有恢复与加密

题目描述

数轴上的每个整点只有黑色和白色两种状态。初始时,只有整点 00 是黑色,其余整点均为白色。

依次执行 qq 次操作,操作分为以下五种:

  1. 给定整数 xx,将整点 xx 染成黑色。
  2. 给定非负整数 xx,同时将所有与某个黑色整点距离不超过 xx 的整点染成黑色。即整点 yy 在操作后为黑色,当且仅当操作前存在黑色整点 zz 满足 yzx|y-z|\le x
  3. 给定整数 l,rl,r,其中 lrl\le r,翻转区间 [l,r][l,r]。对于每个 x[l,r]x\in[l,r],操作后整点 xx 的颜色等于操作前整点 l+rxl+r-x 的颜色;区间外整点的颜色不变。
  4. 给定整数 xx,将所有整点恢复为第 xx 次操作执行后的状态。若 x=0x=0,则恢复到初始状态。
  5. 给定整数 xx,询问整点 xx 是否为黑色。

输入经过在线加密。设此前所有询问中输出 Yes 的次数为 lastlast。对于每次操作,除操作编号外,输入中的所有整数都需要先与 lastlast 进行按位异或,才能得到真实参数。

输入格式

第一行输入一个整数 TT,表示测试数据组数。

对于每组测试数据:

第一行输入一个整数 qq,表示操作数量。

接下来 qq 行,每行表示一次操作:

  • 1 x:将整点 xx 染成黑色;
  • 2 x:扩张所有黑色区域;
  • 3 l r:翻转区间 [l,r][l,r]
  • 4 x:恢复到第 xx 次操作后的状态;
  • 5 x:询问整点 xx 的颜色。

每组测试数据开始时,Yes 的数量重新置为 00

将输入参数解密后,对于一组测试数据:

0q2×1050\le q\le 2\times 10^5

操作 11 和操作 55 满足 x1012|x|\le 10^{12}

操作 22 满足 0x1060\le x\le 10^6

操作 33 满足 l,r1012|l|,|r|\le 10^{12}lrl\le r

操作 44 满足 0x<i0\le x<i,其中 ii 是当前操作编号。

OJ 中只有一个正式测试点,该测试点满足:

T=10000T=10000

q=2×106\sum q=2\times 10^6

输出格式

对于每个操作 55 输出一行。

如果询问的整点是黑色,输出 Yes;否则输出 No

样例输入

3
5
5 0
1 4
5 4
4 2
5 7
5
1 -2
2 1
5 -3
3 -4 2
5 2
3
5 1
1 1
5 1

样例输出

Yes
Yes
No
Yes
Yes
No
Yes

来源:2026杭电多校-测试专用(肖岱恩) 原题链接:http://acm.hdu.edu.cn/contest/problem_show.php?cid=1236&pid=1011