CF1271B Blocks

题目描述

有 $n$ 个方块排成一行,从左到右编号为 $1$ 到 $n$。每个方块要么是黑色,要么是白色。 你可以进行如下操作任意次(也可以不进行):选择两个相邻的方块,并将它们的颜色反转(白变黑,黑变白)。 你需要找到一组操作序列,使得所有方块最终颜色相同。你不需要最小化操作次数,但操作次数不能超过 $3 \cdot n$。如果无法通过操作使所有方块颜色相同,则需要输出无法实现。

输入格式

第一行包含一个整数 $n$($2 \le n \le 200$),表示方块的数量。 第二行包含一个长度为 $n$ 的字符串 $s$,每个字符为 "W" 或 "B"。如果第 $i$ 个字符为 "W",则第 $i$ 个方块是白色;如果为 "B",则第 $i$ 个方块是黑色。

输出格式

如果无法使所有方块颜色相同,输出 $-1$。 否则,输出一个整数 $k$($0 \le k \le 3 \cdot n$),表示操作次数。接下来输出 $k$ 个整数 $p_1, p_2, \dots, p_k$($1 \le p_j \le n - 1$),其中 $p_j$ 表示第 $j$ 次操作选择的左侧方块的位置(即反转第 $p_j$ 和 $p_j+1$ 个方块的颜色)。 如果有多种答案,输出任意一种即可。

说明/提示

在第一个样例中,可以通过 $3$ 次操作使所有方块变为黑色。首先改变第 $6$ 和第 $7$ 个方块,序列变为 "BWWWWBBB"。然后改变第 $2$ 和第 $3$ 个方块,序列变为 "BBBWWBB"。最后改变第 $4$ 和第 $5$ 个方块,所有方块都变为黑色。 在第二个样例中,无法使所有方块颜色相同。 在第三个样例中,所有方块已经是白色。 在第四个样例中,可以通过两次操作使所有方块变为白色:第一次操作改变第 $2$ 和第 $3$ 个方块(序列变为 "BBW"),然后改变第 $1$ 和第 $2$ 个方块(所有方块变为白色)。 由 ChatGPT 4.1 翻译