二进制表示与查询
时间限制:2s
空间限制:512MB
题目描述
给定长度为 2N 的整数序列 A=(A0,A1,…,A2N−1),以及 Q 次查询。第 i 次查询给出 Xi,Yi,并按照 j=0,1,…,2N−1 的顺序执行下列操作:把 j 写成 N 位二进制数 bN−1bN−2…b0,令 j′ 为翻转其中第 Xi 位后表示的整数;如果 bXi=Yi,就把当前的 Aj 加到 Aj′ 中。
所有查询依次完成后,输出序列中每个元素对 998244353 取模的结果。这里二进制位从最低位开始编号为 0。
输入格式
第一行两个整数 N,Q。第二行给出 2N 个整数 A0,A1,…,A2N−1。接下来 Q 行,每行两个整数 Xi,Yi。
输出格式
输出一行 2N 个整数,依次表示所有查询结束后的 A0,A1,…,A2N−1,相邻整数用空格分隔。
样例输入 1
2 2
0 1 2 3
1 1
0 0
样例输出 1
2 6 2 5
样例输入 2
3 10
606248357 338306877 919152167 981537317 808873985 845549408 680941783 921035119
1 1
0 0
0 0
0 0
0 1
0 1
0 1
2 0
2 0
2 0
样例输出 2
246895115 904824001 157201385 744260759 973709546 964549010 61683812 205420980
数据范围
- 1≤N≤18,1≤Q≤2×105;
- 0≤Ai<998244353;
- 0≤Xi<N,Yi∈{0,1};
- 输入均为整数。
| 子任务编号 |
分值 |
特殊限制 |
| 1 |
10 |
N≤5,Q≤20 |
| 2 |
15 |
所有 Xi 两两不同 |
| 3 |
所有 Xi 均相同 |
| 4 |
30 |
X1≤X2≤⋯≤XQ |
| 5 |
无特殊限制 |