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 完成