CF1747D Yet Another Problem
题目描述
给定一个长度为 $n$ 的整数数组 $a$,$a_1, a_2, a_3, \ldots, a_n$。
你需要回答 $q$ 个独立的询问,每个询问包含两个整数 $l$ 和 $r$。
- 对于每个询问,考虑子数组 $a[l:r] = [a_l, a_{l+1}, \ldots, a_r]$。你可以对该子数组进行任意次(也可以不进行)如下操作:
1. 选择两个整数 $L$、$R$,满足 $l \leq L \leq R \leq r$ 且 $R - L + 1$ 为奇数。
2. 将子数组 $[L, R]$ 内的所有元素替换为该子数组所有元素的异或和(XOR)。
- 对于每个询问,输出使得子数组 $a[l:r]$ 的所有元素都变为 $0$ 所需的最小操作次数;如果无法使所有元素都变为 $0$,输出 $-1$。
关于异或操作的更多细节可参考 [这里](https://en.wikipedia.org/wiki/Bitwise_operation#XOR)。
输入格式
第一行包含两个整数 $n$ 和 $q$,表示数组 $a$ 的长度和询问的数量,$1 \leq n, q \leq 2 \times 10^5$。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$,$0 \leq a_i < 2^{30}$,表示数组 $a$ 的元素。
接下来的 $q$ 行,每行包含两个整数 $l_i$ 和 $r_i$,$1 \leq l_i \leq r_i \leq n$,表示第 $i$ 个询问的区间。
输出格式
对于每个询问,输出一个整数,表示该询问的答案。
说明/提示
对于第一个询问,$l = 3, r = 4$,子数组为 $[3, 3]$。我们只能对长度为 $1$ 的子数组进行操作,这不会改变数组,因此无法将所有元素变为 $0$。
对于第二个询问,$l = 4, r = 6$,子数组为 $[3, 1, 2]$。我们可以选择整个子数组($L = 4, R = 6$),将所有元素替换为它们的异或和 $3 \oplus 1 \oplus 2 = 0$,得到 $[0, 0, 0]$。
对于第五个询问,$l = 1, r = 6$,子数组为 $[3, 0, 3, 3, 1, 2]$。可以按如下方式操作:
1. 选择 $L = 4, R = 6$,得到 $[3, 0, 3, 0, 0, 0]$。
2. 选择 $L = 1, R = 5$,得到 $[0, 0, 0, 0, 0, 0]$。
由 ChatGPT 4.1 翻译