P15254 [USACO26JAN2] It's Mooin' Time IV B
题目描述
Bessie 有一个键盘,上面只有两个字母:M 和 O。
Bessie 想打出她最喜欢的哞哞字符串 $S$,该字符串由 $N$ 个字母组成,每个字母是 M 或 O。然而,她的电脑中了病毒。每次她尝试打出字母 O 时,她之前打出的所有字母都会翻转,从 M 变成 O 或从 O 变成 M,然后 O 才出现。
Bessie 有可能打出她最喜欢的哞哞字符串吗?
此外,Bessie 被给定一个参数 $k$,其值为 $0$ 或 $1$。
- 如果 $k = 0$,那么 Bessie 只需要判断是否可能打出她最喜欢的哞哞字符串。
- 如果 $k = 1$,那么 Bessie 还需要给出一个按键序列的例子,以便她能够打出她最喜欢的哞哞字符串。
输入格式
第一行包含 $T$,表示独立测试用例的数量($1\le T\le 10^4$),和 $k$($0 \le k \le 1$)。
每个测试用例的第一行有 $N$($1 \le N \le 2 \cdot 10^5$)。
每个测试用例的第二行有 $S$。保证 $S$ 中除了 `M` 和 `O` 外不会出现其他字符。
所有测试用例的 $N$ 之和不超过 $4 \cdot 10^5$。
输出格式
对于每个测试用例,按照以下步骤输出一行或两行。
如果 Bessie 不可能打出 $S$,则在一行中打印 `NO`。
否则,在第一行打印 `YES`。此外,如果 $k=1$,在第二行打印一个长度为 $N$ 的字符串,表示 Bessie 需要按顺序打出的字母序列,以便打出她最喜欢的哞哞字符串。如果有多个这样的字符串,任意一个都可以接受。
说明/提示
当 Bessie 打出 `MOOMO` 时,字母的变化如下:
- 在打出第一个 `M` 之前,Bessie 有一个空字符串。之后,她有了字符串 `M`。
- 在打出第一个 `O` 之后,`M` 翻转为 `O`,然后 `O` 被追加,形成 `OO`。
- 在打出第二个 `O` 之后,`OO` 翻转为 `MM`,然后 `O` 被追加,形成 `MMO`。
- 在打出第二个 `M` 之后,Bessie 有了字符串 `MMOM`。
- 在打出最后一个 `O` 之后,字符串 `MMOM` 翻转为 `OOMO`,然后 `O` 被追加,形成 `OOMOO`,正如所愿。
### 评分
- 输入 3-4:$k=0$。
- 输入 5-6:$k=1, T \le 10^3, N \le 10$。
- 输入 7-9:$k=1, T \le 10, N \le 1000$。
- 输入 10-16:$k=1$。
翻译由 DeepSeek 完成