AT_arc134_b.[ARC134B] Reserve or Reverse
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个长度为 N 的字符串 s。第 i 个字符记作 si。
すぬけ君会按照以下步骤对 s 进行变换:
- 选择 (1,2,…,N) 的一个长度为偶数的(不一定连续)子序列 x=(x1,x2,…,x2k)(k=0 也可以)。
- 将 sx1 与 sx2k 交换。
- 将 sx2 与 sx2k−1 交换。
- 将 sx3 与 sx2k−2 交换。
- ⋮
- 将 sxk 与 sxk+1 交换。
请你求出,经过すぬけ君操作后,s 可能变成的所有字符串中,字典序最小的字符串。
什么是字典序?字典序简单来说就是“单词在字典中的排列顺序”。更严格地说,判断两个不同字符串 S 和 T 的大小的方法如下:
记“S 的第 i 个字符”为 Si。若 S 字典序小于 T,记作 S<T;若大于,记作 S>T。
- 取 S 和 T 中较短的长度为 L。依次比较 i=1,2,…,L 的 Si 和 Ti 是否相同。
- 若存在 Si=Ti,取最小的此类 i 为 j,比较 Sj 和 Tj。若 Sj 的字母序小于 Tj,则 S<T,否则 S>T,算法结束。
- 若所有 Si=Ti,则比较长度,若 S 比 T 短,则 S<T,否则 S>T,算法结束。
输入格式
输入从标准输入读入,格式如下:
N s
输出格式
请输出すぬけ君操作后可能得到的所有字符串中字典序最小的一个。
输入输出样例
输入#1
4 dcab
输出#1
acdb
输入#2
2 ab
输出#2
ab
输入#3
16 cabaaabbbabcbaba
输出#3
aaaaaaabbbbcbbbc
输入#4
17 snwfpfwipeusiwkzo
输出#4
effwpnwipsusiwkzo
说明/提示
数据范围
- 1≤N≤2×105
- s 是仅由小写英文字母组成的长度为 N 的字符串
样例解释 1
- 当 x=(1,3) 时,仅 s1 和 s3 被交换。操作后 s 变为
acdb,是字典序最小的。
样例解释 2
- 当 x=() 时,操作后 s 仍为
ab,是字典序最小的。注意 x 的长度为 0 也是允许的。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?