#35999. 蒜头学位运算

    ID: 35999 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>线段树位运算普及T4/提高T1魔扣OJ

蒜头学位运算

暂无测试数据。

蒜头有一个序列 $a$,包含 $2^n$ 个非负整数: $a_1$, $a_2$, $\cdots$ $a_{2^n}$。正好蒜头在学习 位运算,为了更好学习,他决定用位运算对这个序列做一些操作得到一个结果 $v$。

他一共操作 $n$ 步,第一步先生成一个长度为 $2^{n - 1}$ 的序列 $a_1\ or \ a_2$, $a_3\ or \ a_4$, $\cdots$, $a_{2^n - 1}\ or \ a_{2^n}$,假设生成的新的序列为 $b_1$, $b_2$, $\cdots$, $b_{2^{n-1}}$,第二步用 $b$ 序列生成一个长度为 $2^{n - 2}$ 的序列,$b_1\ xor \ b_2$, $b_3\ xor \ b_4$, $\cdots$, $b_{2^{n-1} - 1}\ xor \ b_{2^{n - 1}}$,假设为 $c_1$, $c_2$, $\cdots$, $c_{2^{n - 2}}$,第三步用 $c$ 序列生成一个新的序列 $c_1\ or \ c_2$, $c_3\ or \ c_4$, $\cdots$, $c_{2^{n-2} - 1}\ or \ a_{2^{n-2}}$,..... ,直到第 $n$ 步操作结束后序列变成一个数 $v$。也就是奇数次的合并操作为 ”或”,偶数次的合并操作为 “异或”。

比如 $a = (1, 2, 3, 5)$,第一步操作后的带 $(1, 2, 3, 4)$ $\longrightarrow{}$ $(1\ or\ 2 = 3,$ $3\ or\ 4 = 7)$ $\longrightarrow{}$ $(3\ xor\ 7) = 4$,所以最后 $v = 4$。

直接计算最后的 $v$ 对蒜头太简单了,他想更有挑战一些,他想修改 $m$ 次 $a$ 序列,每次修改 $a_p = b$,每次修改后再求 $v$ 的值。

输入格式

第一行输入两个 $n(1 \le n \le 17)$ 和 $m(1 \le m \le 10^5)$。

接下来一行输入 $2^n$ 个整数 $a_1$, $a_2$, $\cdots$, $a_{2^n}$$(0 \le a_i < 2^{30})$。 接下来 $m$ 行,第 $i$ 行输入两个整数 $p_i(1 \le p_i \le 2^n)$, $b_i(0 \le b_i < 2^{30})$,表示一次修改。

输出格式

每次修改输出一行表示的新的 $v$ 的值。注意前面的修改是永久化的。

2 4
1 6 3 5
1 4
3 4
1 2
1 2
1
3
3
3