问题2456--A ↔ BB

2456: A ↔ BB

[命题人 : ]
时间限制 : 1 sec  内存限制 : 128 MB

提交

题目描述

给你一个长度为 $N$ 的字符串 $S$ ,由 `A`、`B`、`C` 组成。

您可以按照任意顺序对 $S$ 进行以下两种运算。

- 在 $S$ 中选择 `A`,删除它,并在该位置插入 `BB`。
- 在 $S$ 中选择两个相邻的`BB`字符,删除它们,并在该位置插入`A`。

找出经过上述操作后, $S$ 在词法上可能变成的最小字符串。

词典顺序是什么?

简单地说,词典顺序就是单词在词典中的排列顺序。作为更正式的定义,下面是确定不同字符串 $S$ 和 $T$ 之间的词序的算法。

下面,让 $S_i$ 表示 $S$ 的 $i$ -th 字符。另外,如果 $S$ 在词法上小于 $T$ ,我们将用 $S \lt T$ 表示;如果 $S$ 在词法上大于 $T$ ,我们将用 $S \gt T$ 表示。

1.  设 $L$ 是 $S$ 和 $T$ 长度中较小的一个。对于每一个 $i=1,2,\dots,L$ ,我们检查 $S_i$ 和 $T_i$ 是否相同。
2.  如果有一个 $i$ 与 $S_i \neq T_i$ 相同,则让 $j$ 成为最小的 $i$ 。然后,我们比较 $S_j$ 和 $T_j$ 。如果按字母顺序 $S_j$ 早于 $T_j$ ,则确定 $S \lt T$ ,并放弃;如果 $S_j$ 晚于 $T_j$ ,则确定 $S \gt T$ ,并放弃。
3.  如果 $S_i \neq T_i$ 中没有 $i$ ,则比较 $S$ 和 $T$ 的长度。如果 $S$ 短于 $T$ ,则确定 $S \lt T$ ,并放弃;如果 $S$ 长于 $T$ ,则确定 $S \gt T$ ,并放弃。

输入

- $1 \leq N \leq 200000$
- $S$ 是长度为 $N$ 的字符串,由 `A`、`B`、`C` 组成。

输出

打印答案

样例输入 Copy

4
CBAA

样例输出 Copy

CAAB

提示

样例输出 

```
CAAB
```

我们应该这样做

- 最初,我们有 $S=$ `CBAA`。
- 删除 $3$ (rd)字符 "A",插入 "BB",得到 $S=$ `CBBBA`。
- 删除 $2$ -nd和 $3$ -rd字符`BB`,插入`A`,得到 $S=$ `CABA`。
- 删除 $4$ -th字符 "A",并插入 "BB",组成 $S=$ `CABBB`。
- 删除 $3$ -rd和 $4$ -th字符`BB`,插入`A`,得到 $S=$ `CABAB`。

我们无法使 $S$ 在词法上小于 `CAAB`。因此,答案是 `CAAB`。