AT_arc136_a.[ARC136A] A ↔ BB

入门

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一个由 A、B、C 组成、长度为 NN 的字符串 SS。

你可以对 SS 进行如下两种操作,操作的顺序和次数不限:

  • 从 SS 中选择一个 A 并删除,在该位置写入新的 BB。
  • 从 SS 中选择一对相邻的 BB 并删除,在该位置写入新的 A。

请你求出所有可能通过上述操作得到的 SS 中,字典序最小的字符串。

什么是字典序?字典序简单来说就是“单词在字典中的排列顺序”。更严格地说,判断两个不同字符串 SS 和 TT 的大小的算法如下:

设 SS 的第 ii 个字符记为 SiS_i。若 SS 字典序小于 TT,记作 S<TS < T;若大于,记作 S>TS > T。

  1. 取 SS 和 TT 中较短的字符串长度为 LL,依次比较 i=1,2,…,Li=1,2,\dots,L 的 SiS_i 和 TiT_i 是否相同。
  2. 若存在 Si≠TiS_i \neq T_i 的 ii,取最小的此类 ii 为 jj,比较 SjS_j 和 TjT_j,若 SjS_j 的字母顺序小于 TjT_j,则 S<TS < T,否则 S>TS > T,算法结束。
  3. 若所有 Si=TiS_i = T_i,则比较长度,若 SS 比 TT 短,则 S<TS < T,否则 S>TS > T,算法结束。

输入格式

输入从标准输入读入,格式如下:

NN SS

输出格式

请输出答案。

输入输出样例

  • 输入#1

    4
    CBAA

    输出#1

    CAAB
  • 输入#2

    1
    A

    输出#2

    A
  • 输入#3

    6
    BBBCBB

    输出#3

    ABCA

说明/提示

限制条件

  • 1≤N≤2000001 \leq N \leq 200000
  • SS 是由 A、B、C 组成的长度为 NN 的字符串

样例解释 1

可以按如下方式操作:

  • 初始时,S=S=CBAA。
  • 删除第 3 个字符的 A,写入 BB,S=S=CBBBA。
  • 删除第 2、3 个字符的 BB,写入 A,S=S=CABA。
  • 删除第 4 个字符的 A,写入 BB,S=S=CABBB。
  • 删除第 3、4 个字符的 BB,写入 A,S=S=CAAB。

无法将 SS 变为比 CAAB 字典序更小的字符串。因此答案为 CAAB。

样例解释 2

一次操作都不进行。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页