#P7346. 【DSOI 2021】归零

【DSOI 2021】归零

题目背景

能和强欲魔女谈话的机会,对其他人来说是不可多得的 。

进行问答只需要彼此而已,多余的闲功夫就省了吧 ,只有言语就够了 。

你的求知欲、好奇心、强欲,我都给予肯定 。

说吧,你想问什么 ?

是关于为振救苍生免于饥饿,违背天命而创造出的野兽 \left \lceil \right. 暴食魔女 \left. \right \rfloor 达芙妮的事吗 ?

是那个打算用爱填满世界,而赐予非人之物情感 \left \lceil \right. 色欲魔女 \left. \right \rfloor 卡蜜拉的事吗?

是一边哀叹着世界充满争斗,却用暴力治愈所有人 \left \lceil \right. 愤怒魔女 \left. \right \rfloor 密涅瓦的事吗?

是仅仅为了追求安稳,就把龙赶到大瀑布彼端 \left \lceil \right. 怠惰魔女 \left. \right \rfloor 塞赫麦特的事吗?

是仗着年幼天真,却毫无慈悲地制裁世人 \left \lceil \right. 傲慢魔女 \left. \right \rfloor 缇丰的事吗?

是为了渴求世上一切智慧,就连死后的世界都舍不得放弃 那位知识欲望的化身 \left \lceil \right. 强欲魔女 \left. \right \rfloor 艾姬多娜的事吗?

还是说,是消灭所有魔女做自己的食粮,并与世界为敌的 \left \lceil \right. 嫉妒魔女 \left. \right \rfloor 那位令人忌讳的 \left \lceil \right. \left. \right \rfloor

题目描述

若觉得题意不清,请造访 “输入格式” 查看简明化题意。

请查看题目保证以确保能 solve the problem .

我想问的只有 ....

如果我有一串长度为 nn 的序列 aa ,编号从 1n1\rightarrow n , aia_i 表示第 ii 个数.

我共将进行 mm 次四种类型的操作,其编号为给出的顺序 :

\left \lceil \right. 如果我有 xxyy 两值,我会用阴魔法将序列中所有下标 i0(modx)i \equiv 0 \pmod{x} aia_i 异或上 yy\left. \right \rfloor

\left \lceil \right. 同时我也会三省自身,问问自己序列中 axa_x 的值 。\left. \right \rfloor

\left \lceil \right. 多次轮回让我明白,只有完美把握住每一次机遇,我才可以占据更大的有利因素。因而我将估量 axa_x 和我的预期 yy ,如果 axya_x \le y ,我将轮回并执行编号为 uvu \rightarrow v 的操作中的 阴魔法操作\left. \right \rfloor

\left \lceil \right. 另外,为了防止遗忘,我还会轮回执行编号为 xx 的操作。\left. \right \rfloor

你也知道,轮回的存档点是不能交错的,所以我的轮回是不会相交的。

请问你,能否帮我,回答我心中的问答?

输入格式

第一行两个数 nnmm ,表示序列长度和操作数。
第二行 nn 个数 aia_i ,表示初始序列。
接下来有 mm 行,有若干数字,第 i+2i + 2 行表示编号为 ii 的操作,第一个数 opop11 \rightarrow 4 的一个 :

  • op=1op = 1 : 读入 3 个数 11 , xx , yy , 对 \forall i0(modx)i \equiv 0 \pmod{x} ( 也就是 xx , 2x2xkxkx kZ+k \in Z^+ k×xnk \times x \le n ), ai=aiya_i = a_i \oplus y\oplus 表示异或)。
  • op=2op = 2 : 读入 2 个数 22 , xx ,输出 axa_x
  • op=3op = 3 : 读入 5 个数 33 , xx , yy , uu , vv , 若 axya_x \le y,执行编号为 uvu \rightarrow v 内所有 op=1op = 1 的操作,否则无视此操作。保证 uv<iu \le v < i
  • op=4op = 4 : 读入 2 个数 44 , xx , 执行编号为 xx 的操作。保证 x<ix < i

因为轮回不交错:题目保证,若 opi=3op_i = 3则编号为 ui1u\rightarrow i-1 的操作,类型一定不为 33 or 44 同时,若 opi=4op_i = 4则编号为 x+1i1x+1\rightarrow i-1 的操作,类型一定不为 33 or 44 ( 但是 xx 位置可为 3344 类型操作,即可以调用 )。

用数学语言就是:opi=3op_i = 3 ,则 [u,i)[u , i) 一定没有 33 or 44 操作 ; 若 opi=4op_i = 4 , 则 (x,i)(x, i) 一定没有 33 or 44 操作。

输出格式

输出若干行。
每一行为 op=2op=2 类型操作的询问结果或 op=4op = 4 类型操作调用的询问操作的询问结果。

6 10
1 1 4 5 1 4
1 1 6
1 2 8
4 2
4 3
4 4
4 5 
4 6
2 1
2 3
2 4
7
2
3
6 10
2 3 7 1 9 0
1 1 2
3 4 10 1 1
1 3 3
4 3
2 5
2 6
1 2 8
4 5
4 8
2 6
9
0
9
9
8

提示

【对于样例 2,下面给出其每个操作过程中序列的值】

操作 a1a_1 a2a_2 a3a_3 a4a_4 a5a_5 a6a_6 说明
2 3 7 1 9 0 读入
1st1_{st} 0 1 5 3 11 2 161\rightarrow6xorxor 22
2nd2_{nd} 2 3 7 1 9 0 a4=310a_4 = 3 \le 10 ,进行 11 操作
3rd3_{rd} 4 3 33 // 66xorxor 3
4th4_{th} 7 0
5th5_{th} 输出 a5a_5
6th6_{th}
7th7_{th} 11 9 8 22 // 44 // 66xorxor 88
8th8_{th} 输出 a5a_5
9th9_{th}
10th10_{th} 输出 a6a_6

【关于“保证”的说明】

例如一串操作类型为 op1=1op_1 = 1op2=4op_2 = 4op3=2op_3 = 2op4=3op_4 = 3op5=1op_5 = 1op6=4op_6=4。那么 op4op_4 所对应的 uuvv 只能为 u=3u = 3v=3v = 3 ,因为 u2u \le 2 会导致其范围内包含 44 操作;而 op6op_6 所对应的 xx 可以是 4455 ,因为这样子 xx 的右边到编号 66 的左边都没有 3344 操作。


【数据范围】
本题采用捆绑测试。 你必须通过 Subtask 中所有的测试点才能获得该 Subtask 的分数。 | Subtask | 特殊性质 | 分值 | | :----------: | :----------: |:--------:| | 1 | 为样例 22 | 2 pts| | 2 | n10n \le 10 , m10m \le 10 | 8 pts | | 3 | n1000n \le 1000 , m1000m \le 1000 | 10 pts | | 4 | n104n \le 10^4 , m104m \le 10^4 | 10 pts | | 5 | n105n \le 10^5 , m5×105m \le 5 \times 10^5 , 无操作 44 | 10 pts | | 6 | n105n \le 10^5 , m5×105m \le 5 \times 10^5 , 无操作 33 | 10 pts | | 7 | n105n \le 10^5 , m5×105m \le 5 \times 10^5 , 数据随机 | 18 pts | | 8 | n105n \le 10^5 , m5×105m \le 5 \times 10^5| 32 pts | 对于 100%100\% 的数据,保证 1n1051 \le n \le 10^5 , m5×105m \le 5 \times 10^5,保证过程及结果的所有值都在 int 范围内。