CF1572B Xor of 3
题目描述
给定一个长度为 $n$ 的序列 $a$,该序列仅包含 $0$ 和 $1$。
你可以对该序列进行如下操作:
- 选择一个下标 $i$,其中 $1 \leq i \leq n-2$(包含两端)。
- 将 $a_{i}$、$a_{i+1}$、$a_{i+2}$ 同时修改为 $a_{i} \oplus a_{i+1} \oplus a_{i+2}$,其中 $\oplus$ 表示[按位异或运算](https://en.wikipedia.org/wiki/Bitwise_operation#XOR)。
请找出最多进行 $n$ 次操作后,将所有元素都变为 $0$ 的操作序列,或者报告无解。我们可以证明,如果存在任意长度的操作序列能将所有元素变为 $0$,那么一定存在长度不超过 $n$ 的操作序列也能做到这一点。
输入格式
每组测试数据包含多个测试用例。第一行为测试用例个数 $t$($1 \leq t \leq 10^4$)。
每个测试用例的第一行为一个整数 $n$($3 \leq n \leq 2\cdot10^5$),表示序列 $a$ 的长度。
第二行为 $n$ 个整数 $a_1, a_2, \ldots, a_n$($a_i = 0$ 或 $a_i = 1$),表示序列 $a$ 的元素。
保证所有测试用例中 $n$ 的总和不超过 $2\cdot10^5$。
输出格式
对于每个测试用例:
- 如果无法通过上述操作将所有元素变为 $0$,输出 "NO"。
- 否则,第一行输出 "YES",第二行输出 $k$($0 \leq k \leq n$),表示你要对 $a$ 进行的操作次数,第三行输出 $b_1, b_2, \dots, b_k$($1 \leq b_i \leq n-2$),表示每次操作选择的下标。
如果有多种方案,可以输出任意一种。
说明/提示
在第一个样例中,序列全为 $0$,无需进行任何操作。
在第二个样例中,可以先对 $a$ 的第三个元素进行操作,将 $[1, 1, 1, 1, 0]$ 变为 $[1, 1, 0, 0, 0]$,再对第一个元素进行操作,得到 $[0, 0, 0, 0, 0]$。
在第三个样例中,无论先对第一个还是第二个元素进行操作,都会得到 $[1, 1, 1, 1]$,无法变为 $[0, 0, 0, 0]$。
由 ChatGPT 4.1 翻译