CF1614C Divan and bitwise operations
题目描述
有一次,Divan 分析了一个由 $n$ 个非负整数组成的序列 $a_1, a_2, \ldots, a_n$。他对该序列的每一个非空子序列,计算其所有元素的按位异或(bitwise XOR),并将所有异或值相加,得到该序列的“舒适度”(coziness)。
如果序列 $c$ 可以通过从序列 $d$ 中删除若干(可能为零或全部)元素得到,则称 $c$ 是 $d$ 的一个子序列。例如,$[1,\,2,\,3,\,4]$、$[2,\,4]$ 和 $[2]$ 都是 $[1,\,2,\,3,\,4]$ 的子序列,但 $[4,\,3]$ 和 $[0]$ 不是。
Divan 对自己的分析非常自豪,但现在他丢失了序列 $a$,也忘记了舒适度的值!不过,Divan 还记得关于序列 $a$ 的 $m$ 个连续子段的按位或(bitwise OR)值。并且,原序列的每个元素都至少包含在这 $m$ 个区间中的某一个。
Divan 请你帮忙,根据他记得的信息,计算出序列 $a$ 的舒适度。如果可能有多个舒适度值,输出任意一个即可。
由于结果可能非常大,请输出对 $10^9+7$ 取模后的值。
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^3$),表示测试用例的数量。
每个测试用例的第一行包含两个整数 $n$ 和 $m$($1 \le n, m \le 2 \times 10^5$),分别表示序列的长度和已知的连续区间数量。
接下来的 $m$ 行,每行描述一个区间,包含三个整数 $l$、$r$、$x$($1 \le l \le r \le n$,$0 \le x \le 2^{30} - 1$),表示区间 $[l, r]$ 的按位或值为 $x$。
保证每个序列元素至少被包含在某一个区间内。保证一定存在满足所有条件的序列。
保证所有测试用例中 $n$ 的总和与 $m$ 的总和不超过 $2 \times 10^5$。
输出格式
对于每个测试用例,输出任意一个满足条件的序列 $a$ 的舒适度,对 $10^9+7$ 取模后的值。
说明/提示
在第一个样例中,满足条件的序列之一是 $[0, 2]$。考虑它所有的非空子序列:
- $[0]$:该子序列的按位异或为 $0$;
- $[2]$:该子序列的按位异或为 $2$;
- $[0, 2]$:该子序列的按位异或为 $2$。
所有结果之和为 $4$,所以答案为 $4$。
在第二个样例中,满足条件的序列之一是 $[0,\,5,\,5]$。
在第三个样例中,满足条件的序列之一是 $[5,\,6,\,7,\,0,\,2]$。
由 ChatGPT 4.1 翻译