CF1030E Vasya and Good Sequences
题目描述
Vasya 有一个长度为 $n$ 的整数序列 $a$,包含 $a_1, a_2, \dots, a_n$。Vasya 可以进行如下操作:选择序列中的某个数,将其二进制表示中的任意一对比特进行交换。例如,Vasya 可以将数字 $6$($\dots 00000000110_2$)变为 $3$($\dots 00000000011_2$)、$12$($\dots 000000001100_2$)、$1026$($\dots 10000000010_2$)以及许多其他数字。Vasya 可以对序列中的任意数字进行任意次(包括零次)这样的操作。
Vasya 称一个序列为“好序列”,如果通过上述操作后,可以得到一个所有元素按位异或(bitwise exclusive or)结果为 $0$ 的序列。
对于给定的序列 $a_1, a_2, \ldots, a_n$,Vasya 想要计算有多少对整数 $(l, r)$ 满足 $1 \le l \le r \le n$,且子序列 $a_l, a_{l + 1}, \dots, a_r$ 是好序列。
输入格式
第一行包含一个整数 $n$($1 \le n \le 3 \cdot 10^5$),表示序列的长度。
第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^{18}$),表示序列 $a$。
输出格式
输出一个整数,表示满足条件的 $(l, r)$ 对数,即有多少个子区间 $a_l, a_{l + 1}, \dots, a_r$ 是好序列。
说明/提示
在第一个样例中,区间 $(2, 3)$ 和 $(1, 3)$ 是合法的。区间 $(2, 3)$ 合法,因为 $a_2 = 7 \rightarrow 11$,$a_3 = 14 \rightarrow 11$,且 $11 \oplus 11 = 0$,其中 $\oplus$ 表示按位异或。区间 $(1, 3)$ 合法,因为 $a_1 = 6 \rightarrow 3$,$a_2 = 7 \rightarrow 13$,$a_3 = 14 \rightarrow 14$,且 $3 \oplus 13 \oplus 14 = 0$。
在第二个样例中,区间 $(1, 2)$、$(2, 3)$、$(3, 4)$ 和 $(1, 4)$ 都是合法的。
由 ChatGPT 4.1 翻译