#ys0072. 王洋老师的三角洲百万撤离记-保险箱密码破解

王洋老师的三角洲百万撤离记-保险箱密码破解

题目描述:

成功落地后,王洋老师在一栋废弃建筑中发现了一个加密保险箱,里面存放着撤离所需的关键证件。保险箱的密码仅由 "撤" 和 "离" 两个汉字组成,但输入规则十分特殊。

保险箱的输入规则如下: 输入 "撤":直接在当前密码末尾添加一个 "撤" 字

输入 "离":先将当前已输入的所有字翻转("撤" 变为 "离","离" 变为 "撤"),然后在末尾添加一个 "离" 字

请你帮助王洋老师判断是否能够输入出目标密码 S。

系统还会给出一个参数 k: 若 k=0,你只需要判断是否可能输入出目标密码

若 k=1,你还需要给出一个合法的输入序列

输入格式:

第一行包含两个整数 T 和 k(1 ≤ T ≤ 10⁴,0 ≤ k ≤ 1)。

每个测试用例包含两行:

第一行是一个整数 N(1 ≤ N ≤ 2×10⁵),表示目标密码的长度

第二行是一个长度为 N 的字符串 S,仅由字符 'M' 和 'O' 组成(其中 'M' 代表 "撤",'O' 代表 "离")

所有测试用例的 N 之和不超过 4×10⁵。

输出格式:

对于每个测试用例,按照以下规则输出:

如果无法输入出目标密码 S,输出一行 "NO"

如果可以输入出目标密码 S,第一行输出 "YES"。如果 k=1,第二行输出一个长度为 N 的字符串,表示王洋老师需要依次输入的字符序列('M' 代表 "撤",'O' 代表 "离")。如果有多个合法序列,输出任意一个即可。

样例:

2 0
3
MOO
5
OOMOO
YES
YES
2 1
3
MOO
5
OOMOO
YES
OMO
YES
MOOMO