AT_arc151_d [ARC151D] Binary Representations and Queries

题目描述

给定一个长度为 $2^N$ 的整数序列 $A = (A_0, A_1, \ldots, A_{2^N-1})$。 同时给出 $Q$ 个查询。对于第 $i$ 个查询($i = 1, 2, \ldots, Q$),给定两个整数 $X_i$ 和 $Y_i$,执行以下操作: > 按顺序对 $j = 0, 1, 2, \ldots, 2^N-1$ 执行以下步骤: > > 1. 首先,将 $j$ 的 $N$ 位二进制表示记为 $b_{N-1}b_{N-2}\ldots b_0$。然后,通过反转 $b_{X_i}$($0$ 变为 $1$,$1$ 变为 $0$)得到一个新的二进制表示,并将其对应的整数记为 $j'$。 > 2. 如果 $b_{X_i} = Y_i$,则将 $A_j$ 的值加到 $A_{j'}$ 上。 请输出所有查询按给定顺序执行后,$A$ 中每个元素对 $998244353$ 取模的结果。 关于 $N$ 位二进制表示的定义:非负整数 $X$($0 \leq X < 2^N$)的 $N$ 位二进制表示是唯一满足以下条件的长度为 $N$ 的 $0$ 和 $1$ 组成的序列 $b_{N-1}b_{N-2}\ldots b_0$: - $\sum_{i=0}^{N-1} b_i \cdot 2^i = X$

输入格式

输入通过标准输入给出,格式如下: > $N$ $Q$ > $A_0$ $A_1$ $\ldots$ $A_{2^N-1}$ > $X_1$ $Y_1$ > $X_2$ $Y_2$ > $\vdots$ > $X_Q$ $Y_Q$

输出格式

对于 $i = 0, 1, \ldots, 2^N-1$,输出所有查询执行后 $A_i$ 对 $998244353$ 取模的结果 $A'_i$,用空格分隔: > $A'_0$ $A'_1$ $\ldots$ $A'_{2^N-1}$

说明/提示

### 约束条件 - $1 \leq N \leq 18$ - $1 \leq Q \leq 2 \times 10^5$ - $0 \leq A_i < 998244353$ - $0 \leq X_i \leq N-1$ - $Y_i \in \{0, 1\}$ - 所有输入均为整数 ### 样例解释 #1 第一个查询的操作如下: - 当 $j=0$ 时,$b_1b_0=00$,$j'=2$。由于 $b_1 \neq 1$,不执行加法。 - 当 $j=1$ 时,$b_1b_0=01$,$j'=3$。由于 $b_1 \neq 1$,不执行加法。 - 当 $j=2$ 时,$b_1b_0=10$,$j'=0$。由于 $b_1=1$,将 $A_2$ 加到 $A_0$ 上,$A$ 变为 $(2,1,2,3)$。 - 当 $j=3$ 时,$b_1b_0=11$,$j'=1$。由于 $b_1=1$,将 $A_3$ 加到 $A_1$ 上,$A$ 变为 $(2,4,2,3)$。 第二个查询的操作如下: - 当 $j=0$ 时,$b_1b_0=00$,$j'=1$。由于 $b_0=0$,将 $A_0$ 加到 $A_1$ 上,$A$ 变为 $(2,6,2,3)$。 - 当 $j=1$ 时,$b_1b_0=01$,$j'=0$。由于 $b_0 \neq 0$,不执行加法。 - 当 $j=2$ 时,$b_1b_0=10$,$j'=3$。由于 $b_0=0$,将 $A_2$ 加到 $A_3$ 上,$A$ 变为 $(2,6,2,5)$。 - 当 $j=3$ 时,$b_1b_0=11$,$j'=2$。由于 $b_0 \neq 0$,不执行加法。 最终 $A$ 的结果为 $(2,6,2,5)$