AT_abc350_f [ABC350F] Transpose
题目描述
给定一个由英文字母大小写和 `(`、`)` 组成的字符串 $S = S_1 S_2 S_3 \dots S_{|S|}$。
字符串 $S$ 中的括号是配对的。
重复进行如下操作,直到无法继续为止:
- 首先,选择一组满足以下所有条件的整数对 $(l, r)$:
- $l < r$
- $S_l = ($
- $S_r = )$
- $S_{l+1}, S_{l+2}, \dots, S_{r-1}$ 全部为英文字母(大写或小写)
- 令 $T = \overline{S_{r-1} S_{r-2} \dots S_{l+1}}$。
- 其中,$\overline{x}$ 表示将字符串 $x$ 的大小写反转后的结果。
- 然后,将 $S$ 的第 $l$ 个字符到第 $r$ 个字符删除,并在该位置插入 $T$。
具体操作过程请参见输入输出样例。
通过上述操作,可以将所有的 `(` 和 `)` 都去除,并且最终得到的字符串与操作的方法和顺序无关,这一点可以得到证明。
请输出最终得到的字符串。
“$S$ 中的括号是配对的”是什么意思?首先,定义“正确的括号序列”如下:
- 空字符串
- 存在某个正确的括号序列 $A$,将 `(`、$A$、`)` 按此顺序连接得到的字符串
- 存在某些非空的正确括号序列 $A, B$,将 $A, B$ 按此顺序连接得到的字符串
$S$ 中的括号是配对的,指的是将 $S$ 中的所有 `(` 和 `)` 按顺序取出后,它们组成的字符串是一个正确的括号序列。
输入格式
输入以以下格式从标准输入读入。
> $S$
输出格式
请输出答案。
说明/提示
### 限制条件
- $1 \leq |S| \leq 5 \times 10^5$
- $S$ 由英文字母大小写和 `(`、`)` 组成
- $S$ 中的括号是配对的
### 样例解释 1
对于 $S=$ `((A)y)x`,操作如下:
- 选择 $l=2, r=4$。此时被删除的字符串为 `(A)`,插入 `a`。
- 操作后,$S=$ `(ay)x`。
- 选择 $l=1, r=4$。此时被删除的字符串为 `(ay)`,插入 `YA`。
- 操作后,$S=$ `YAx`。
括号全部去除后,字符串为 `YAx`,请输出该字符串。
### 样例解释 2
对于 $S=$ `((XYZ)n(X(y)Z))`,操作如下:
- 选择 $l=10, r=12$。此时被删除的字符串为 `(y)`,插入 `Y`。
- 操作后,$S=$ `((XYZ)n(XYZ))`。
- 选择 $l=2, r=6$。此时被删除的字符串为 `(XYZ)`,插入 `zyx`。
- 操作后,$S=$ `(zyxn(XYZ))`。
- 选择 $l=6, r=10$。此时被删除的字符串为 `(XYZ)`,插入 `zyx`。
- 操作后,$S=$ `(zyxnzyx)`。
- 选择 $l=1, r=9$。此时被删除的字符串为 `(zyxnzyx)`,插入 `XYZNXYZ`。
- 操作后,$S=$ `XYZNXYZ`。
括号全部去除后,字符串为 `XYZNXYZ`,请输出该字符串。
### 样例解释 3
操作结果也可能为空字符串。
由 ChatGPT 4.1 翻译