AT_arc136_a [ARC136A] A ↔ BB

题目描述

给定一个由 `A`、`B`、`C` 组成、长度为 $N$ 的字符串 $S$。 你可以对 $S$ 进行如下两种操作,操作的顺序和次数不限: - 从 $S$ 中选择一个 `A` 并删除,在该位置写入新的 `BB`。 - 从 $S$ 中选择一对相邻的 `BB` 并删除,在该位置写入新的 `A`。 请你求出所有可能通过上述操作得到的 $S$ 中,字典序最小的字符串。 什么是字典序?字典序简单来说就是“单词在字典中的排列顺序”。更严格地说,判断两个不同字符串 $S$ 和 $T$ 的大小的算法如下: 设 $S$ 的第 $i$ 个字符记为 $S_i$。若 $S$ 字典序小于 $T$,记作 $S < T$;若大于,记作 $S > T$。 1. 取 $S$ 和 $T$ 中较短的字符串长度为 $L$,依次比较 $i=1,2,\dots,L$ 的 $S_i$ 和 $T_i$ 是否相同。 2. 若存在 $S_i \neq T_i$ 的 $i$,取最小的此类 $i$ 为 $j$,比较 $S_j$ 和 $T_j$,若 $S_j$ 的字母顺序小于 $T_j$,则 $S < T$,否则 $S > T$,算法结束。 3. 若所有 $S_i = T_i$,则比较长度,若 $S$ 比 $T$ 短,则 $S < T$,否则 $S > T$,算法结束。

输入格式

输入从标准输入读入,格式如下: > $N$ $S$

输出格式

请输出答案。

说明/提示

### 限制条件 - $1 \leq N \leq 200000$ - $S$ 是由 `A`、`B`、`C` 组成的长度为 $N$ 的字符串 ### 样例解释 1 可以按如下方式操作: - 初始时,$S=$`CBAA`。 - 删除第 3 个字符的 `A`,写入 `BB`,$S=$`CBBBA`。 - 删除第 2、3 个字符的 `BB`,写入 `A`,$S=$`CABA`。 - 删除第 4 个字符的 `A`,写入 `BB`,$S=$`CABBB`。 - 删除第 3、4 个字符的 `BB`,写入 `A`,$S=$`CAAB`。 无法将 $S$ 变为比 `CAAB` 字典序更小的字符串。因此答案为 `CAAB`。 ### 样例解释 2 一次操作都不进行。 由 ChatGPT 4.1 翻译