#ATarc148b. [ARC148B] dp

[ARC148B] dp

题目描述

对于仅由 dp 组成、长度为 LL 的字符串 TT,定义 TT 经过 180180 度旋转后的字符串为 f(T)f(T)。更严格地说,f(T)f(T) 满足以下条件:

  • f(T)f(T) 是仅由 dp 组成、长度为 LL 的字符串。
  • 对于所有满足 1iL1 \leq i \leq L 的整数 iif(T)f(T) 的第 ii 个字符与 TT 的第 L+1iL+1-i 个字符不同。

例如,当 T=T = ddddd 时,f(T)=f(T) = ppppp;当 T=T = dpdppp 时,f(T)=f(T) = dddpdp

给定一个仅由 dp 组成、长度为 NN 的字符串 SS
你可以进行 00 次或 11如下操作:

  • 选择一组整数 (L,R)(L, R),满足 1LRN1 \leq L \leq R \leq N,取 SS 的第 LL 个字符到第 RR 个字符组成的子串 TT。然后,将 SS 的第 LL 个字符到第 RR 个字符替换为 f(T)f(T)

例如,S=S = dpdpp(L,R)=(2,4)(L, R) = (2, 4) 时,T=T = pdpf(T)=f(T) = dpd,所以操作后 SS 变为 ddpdp

请输出所有可能得到的 SS 中,字典序最小的字符串。

字典序的定义如下:对于字符串 S=S1S2SSS = S_1S_2\ldots S_{|S|}T=T1T2TTT = T_1T_2\ldots T_{|T|}SS 字典序小于 TT,当且仅当满足以下两条之一。这里 S,T|S|, |T| 分别表示 S,TS, T 的长度。

  1. S<T|S| < |T|S1S2SS=T1T2TSS_1S_2\ldots S_{|S|} = T_1T_2\ldots T_{|S|}
  2. 存在整数 1imin{S,T}1 \leq i \leq \min\lbrace |S|, |T| \rbrace,使得以下两点都成立:
    • S1S2Si1=T1T2Ti1S_1S_2\ldots S_{i-1} = T_1T_2\ldots T_{i-1}
    • SiS_i 是按字母顺序小于 TiT_i 的字符。

输入格式

输入按以下格式从标准输入读入。

NN SS

输出格式

请输出答案。

样例 1

输入

6
dpdppd

输出

dddpdd

样例 2

输入

3
ddd

输出

ddd

样例 3

输入

11
ddpdpdppddp

输出

ddddpdpdddp

说明/提示

限制条件

  • 1N50001 \leq N \leq 5000
  • SS 是仅由 dp 组成、长度为 NN 的字符串
  • NN 是整数

样例解释 1

选择 (L,R)=(2,5)(L, R) = (2, 5)T=T = pdppf(T)=f(T) = ddpd,所以操作后的 SSdddpdd。在所有可能得到的字符串中,dddpdd 字典序最小,因此输出它。

样例解释 2

有时不进行操作是最优的。

由 ChatGPT 4.1 翻译