#715. B 还是数据结构

B 还是数据结构

B 还是数据结构

时间限制: 1s
内存限制: 待定 MB

题目描述

对于非负整数 xx,定义 p(x)\text{p}(x)xx 在二进制下的 11 的个数,例如 p(10)=p(10102)=2\text{p}(10)=p(1010_2)=2

对于非负整数 x,yx,y,定义 f(x,y)=p(xy)f(x,y)=\text{p}(x \oplus y),其中 \oplus 是二进制异或。

对于长度为 nn 的非负整数序列 bb 和正整数 k2 k \ge 2,我们定义它的价值如下:建立一个 mm 个点的无向图,点 iijj 之间有边当且仅当 f(bi,bj)kf(b_i,b_j) \ge k。价值定义为图中大小为 kk 的简单环个数。特别地,若 k=2k=2,价值为图中的边数。

给定非负整数序列 aa,支持操作:

  1. 1 l r x1 \ l \ r \ x :把 al,al+1,,ara_l,a_{l+1},\dots,a_r 都异或 xx
  2. 2 l r k2 \ l \ r \ k :查询序列 al,al+1,,ara_l,a_{l+1},\dots,a_r 的价值,对 998244353998244353 取模。

输入格式

第一行两个正整数 n,qn,q

第二行 nn 个非负整数 a1,a2,,ana_1,a_2,\dots,a_n

qq 行每行四个整数表示操作。

输出格式

对于每个询问,输出一行一个非负整数表示答案,对 998244353998244353 取模。

输入输出样例

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

样例解释

第一次询问中,求序列 [0,1,2,3][0,1,2,3]k=2k=2 时的价值。图中有边 (0,3)(0,3)(1,2)(1,2)(1,3)(1,3)(2,3)(2,3),所以答案为 44

第二次询问中,求序列 [0,1,2,3][0,1,2,3]k=4k=4 时的价值。图中恰有一个环 (0,1,2,3)(0,1,2,3),所以答案为 11

第一次修改后,序列变成 [8,9,10,3,4,5,6,7,8][8,9,10,3,4,5,6,7,8]

数据范围

对于 100%100\% 的数据,1n21051 \le n \le 2*10^51q21051 \le q \le 2*10^50ai<2200 \le a_i < 2^{20}0x<2200 \le x < 2^{20}2kn2 \le k \le n。保证至少存在一次 22 操作。

特殊性质 A:n100n \le 100q100q \le 100。 特殊性质 B:不存在 11 操作。 特殊性质 C:11 操作中 l=rl=r。 特殊性质 D:22 操作中 rl+1100r-l+1 \leq 100