CF2092D Mishkin Energizer
题目描述
为了准备与老朋友 Fernan 的决斗,Edmond 正在制作一种名为 "Mishkin Energizer" 的能量饮料。该饮料由一个长度为 $n$ 的字符串 $s$ 构成,仅包含字符 L、I 和 T,分别对应饮料中三种不同物质的含量。
当饮料中所有三种物质的数量相等时,我们称其为平衡的。为了增强气场并确保决斗胜利,Edmond 必须通过以下操作使初始字符串变为平衡状态:
1. 选择一个下标 $i$ 满足 $s_i \neq s_{i+1}$(此时 $i + 1$ 必须不超过字符串当前长度)。
2. 在它们之间插入一个字符 $x$(可以是 L、I 或 T),且满足 $x \neq s_i$ 和 $x \neq s_{i+1}$。
帮助 Edmond 通过不超过 $\textbf{2n}$ 次操作使饮料平衡并赢得决斗。若存在多种解,可输出任意一种。若不可能实现,需报告此情况。
输入格式
每个测试包含多个测试用例。输入数据第一行包含一个整数 $t$ ($1 \le t \le 100$) —— 测试用例数量。接下来是测试用例描述。
每个测试用例的第一行包含一个整数 $n$ ($1 \le n \le 100$) —— 字符串 $s$ 的长度。
每个测试用例的第二行包含一个长度为 $n$ 的字符串 $s$,仅由字符 L、I 和 T 组成。
输出格式
对于每个测试用例,若无解则输出 $-1$。否则:
- 第一行输出一个整数 $m$ ($0 \le m \le 2n$) —— 执行的操作次数。
- 接下来的 $m$ 行中,第 $l$ 行输出一个整数 $i$ ($1 \le i < n + l - 1$),表示在第 $i$ 和 $i + 1$ 个字符之间插入新字符。该操作必须满足 $s_i \neq s_{i+1}$。
若有多种解,可输出任意一种。注意本题不要求最小化操作次数。
说明/提示
第一个测试案例中,可执行以下操作序列:TILII $\rightarrow$ TLILII $\rightarrow$ TLTILII $\rightarrow$ TLTLILII $\rightarrow$ TLTLTILII。
第二个测试案例中无法进行任何操作,答案为 $-1$。
第三个测试案例中初始字符串已满足三种物质数量相等。
翻译由 DeepSeek R1 完成