保持异或较小
题目描述
给定长度为 n 的非负整数数组 a1,a2,…,an 和一个非负整数 x。
请计算有多少个非空下标子集
1≤b1<b2<⋯<bk≤n
满足:对于任意 1≤i<j≤k,均有
abixorabj≤x.
这里 xor 表示按位异或。由于答案可能很大,请输出答案对
998244353 取模后的结果。
注意,选择的是下标;即使两个位置上的数值相等,它们仍是两个不同的可选元素。
输入格式
第一行包含两个整数 n,x。
第二行包含 n 个整数 a1,a2,…,an。
输出格式
输出一个整数,表示满足条件的非空下标子集数量对 998244353 取模后的结果。
样例输入 1
4 2
0 1 2 3
样例输出 1
8
样例输入 2
3 6
4 2 2
样例输出 2
7
样例输入 3
4 0
1 1 2 2
样例输出 3
6
数据范围
对于所有数据:
- 1≤n≤150000;
- 0≤x<230;
- 0≤ai<230。
| 子任务编号 |
分值 |
特殊限制 |
| 1 |
20 |
x=0 |
| 2 |
40 |
n≤22 |
| 3 |
无特殊限制 |