luogu#P11160. 【MX-X6-T6】機械生命体

【MX-X6-T6】機械生命体

题目背景

許してよ、もう\\ 分かってよ\\ 此処の正体を\\ 僕ですら僕を\\ 愛せないんだって\\ 感情を持った代償をくれよ\\ 狂っている

—— 機械生命体 - Nanatsukaze

二进制的运算和记忆,能够在机械生命体中还原出人类的情感吗?

题目描述

维护一个可重集 SS,初始为空。支持如下操作:

  • 1 x,你需要在 SS 中加入一个数 xx
  • 2 x,你需要在 SS 中删除一个数 xx。保证此时 SS 中存在至少一个 xx。如果存在多个 xx,则仅删除一个。
  • 3 x k v,你需要对 SS 中所有满足 lowbit(xy)2k\operatorname{lowbit}(x\oplus y)\geq 2^kyy 增加 vv 并对 2322^{32} 取模。
  • 4 x,你需要求出 $\max\limits_{y\in S} \operatorname{lowbit}(x\oplus y)$。保证此时 SS 不为空。

其中 lowbit(x)\operatorname{lowbit}(x) 表示最大的整数 kk,使得 kk22 的整数次幂并且整除 xx\oplus 代表按位异或

特殊的,我们在本题定义 lowbit(0)=232\boldsymbol{\textbf{lowbit}(0)=2^{32}}

输入格式

第一行一个整数 qq,代表询问数量。

接下来 qq 行,每行首先输入一个整数 optopt 表示操作类型;如果 opt=3opt=3,则接下来依次输入三个整数 x,k,vx,k,v,否则接下来输入一个整数 xx

输出格式

对每一次 4 操作,输出一个整数代表答案。

11
1 1
1 2
1 2
1 3
1 4
4 10
3 2 1 2
2 4
4 16
2 4
4 16
8
4
2

提示

【样例解释】

66 次操作时,集合为 {1,2,2,3,4}\{1,2,2,3,4\},查询 1010 时,$\operatorname{lowbit}(10\oplus 2)=\operatorname{lowbit}(8)=8$ 为最大值。

77 次操作后,所有 lowbit(x2)21\operatorname{lowbit}(x\oplus 2)\geq 2^1 的数增加 22,集合中满足条件的数有 2,2,42,2,4,于是集合变为 {1,3,4,4,6}\{1,3,4,4,6\}

88 次操作删去一个 44,集合变为 {1,3,4,6}\{1,3,4,6\}

99 次操作查询 1616,$\operatorname{lowbit}(16\oplus 4)=\operatorname{lowbit}(20)=4$ 为最大值。

1010 次操作再次删去一个 44,集合变为 {1,3,6}\{1,3,6\}

1111 次操作查询 1616,$\operatorname{lowbit}(16\oplus 6)=\operatorname{lowbit}(22)=2$ 为最大值。

【数据范围】

对于所有数据,1q5×1051\leq q\leq 5\times 10^50x,y,v23210\leq x,y,v\leq 2^{32}-10k320\leq k\leq 32

捆绑测试,共 5 个 Subtask,具体限制如下所示:

  • Subtask 1(7 pts):q103q\leq 10^3
  • Subtask 2(16 pts):不存在 3 操作。
  • Subtask 3(21 pts):对于 3 操作,k=0k=0
  • Subtask 4(28 pts):对于 3 操作,v=1v=1
  • Subtask 5(28 pts):无特殊限制。