AT_arc199_b [ARC199B] Adjacent Replace
题目描述
给定一个长度为 $N$ 的非负整数序列 $A=(A_1,A_2,\ldots,A_N)$ 和一个非负整数 $K$。
请判断是否可以通过不超过 $10^4$ 次以下操作使得 $A_1=K$。
- 选择一个整数 $i\ (1\leq i\leq N-1)$,令 $x=A_i\oplus A_{i+1}$,然后将 $A_i$ 和 $A_{i+1}$ 都替换为 $x$。
这里,$\oplus$ 表示按位异或(XOR)运算。
如果可能,请输出一种满足条件的操作步骤。
有 $T$ 组测试数据,请分别作答。
按位异或(XOR)运算的定义如下:对于非负整数 $A,B$,$A\oplus B$ 的二进制表示中,第 $2^k$ 位($k\geq 0$)的数为 $A,B$ 的二进制表示中第 $2^k$ 位的数中恰有一个为 $1$ 时为 $1$,否则为 $0$。
例如,$3\oplus 5=6$(二进制表示为:$011\oplus 101=110$)。
输入格式
输入按以下格式从标准输入读入。
> $T$
> $\mathrm{case}_1$
> $\mathrm{case}_2$
> $\vdots$
> $\mathrm{case}_T$
每组测试数据格式如下:
> $N\ K\ A_1\ A_2\ \ldots\ A_N$
输出格式
请按顺序输出每组测试数据的答案。
如果无法通过不超过 $10^4$ 次操作使 $A_1=K$,输出 `No`。
如果可以,请输出操作步骤,格式如下:
> Yes $M$ $i_1$ $i_2$ $\ldots$ $i_M$
其中,$M$ 表示操作次数,$i_j\ (1\leq j\leq M)$ 表示第 $j$ 次操作选择的整数 $i$。要求 $0\leq M\leq 10^4,\ 1\leq i_j\leq N-1$。
如果存在多种满足条件的操作方案,输出任意一种均可。
说明/提示
### 数据范围
- $1\leq T\leq 50$
- $3\leq N\leq 60$
- $0\leq A_i,K