#ABC350F. 转置

转置

转置

题目描述

给定一个由大写英文字母、小写英文字母、( 和 ) 组成的字符串 S=S1S2S3SSS = S_1 S_2 S_3 \dots S_{|S|}

字符串 SS 中的括号是正确匹配的。

重复以下操作,直到无法再进行操作:

首先,选择一对满足以下所有条件的整数 (l,r)(l, r):

  • l<rl \lt r
  • Sl=S_l = (
  • Sr=S_r = )
  • Sl+1,Sl+2,,Sr1S_{l+1}, S_{l+2}, \dots, S_{r-1} 每个字符都是大写或小写英文字母。

T=Sr1Sr2Sl+1T = \overline{S_{r-1} S_{r-2} \dots S_{l+1}}

其中,x\overline{x} 表示将 xx 中每个字符的大小写反转得到的字符串(大写变小写,反之亦然)。

然后,删除 SS 中第 ll 到第 rr 个字符,并在删除的位置插入 TT

请参考样例输入输出来理解。

可以证明,通过上述操作一定可以移除字符串中所有的 ( 和 ),并且最终字符串与操作的方式和顺序无关。

求最终字符串。

「括号正确匹配」是什么意思?

首先,正确括号序列定义如下:

正确括号序列是满足以下条件之一的字符串:

  • 空字符串。
  • 存在一个正确括号序列 AA,字符串按 (,AA,) 的顺序连接而成。
  • 存在非空的正确括号序列 AABB,字符串由 AABB 连接而成。

当且仅当从 SS 中按顺序提取出的 ( 和 ) 构成一个正确括号序列时,称 SS 中的括号是正确匹配的。

输入格式

输入按以下格式从标准输入给出:

SS

输出格式

输出最终字符串。

样例

((A)y)x
YAx

S=S = ((A)y)x 进行操作。

选择 l=2l=2,r=4r=4。子串 (A) 被删除并替换为 a。

此操作后,S=S = (ay)x。

选择 l=1l=1,r=4r=4。子串 (ay) 被删除并替换为 YA。

此操作后,S=S = YAx。

移除括号后,字符串变为 YAx,应输出它。

((XYZ)n(X(y)Z))
XYZNXYZ

S=S = ((XYZ)n(X(y)Z)) 进行操作。

选择 l=10l=10,r=12r=12。子串 (y) 被删除并替换为 Y。

此操作后,S=S = ((XYZ)n(XYZ))。

选择 l=2l=2,r=6r=6。子串 (XYZ) 被删除并替换为 zyx。

此操作后,S=S = (zyxn(XYZ))。

选择 l=6l=6,r=10r=10。子串 (XYZ) 被删除并替换为 zyx。

此操作后,S=S = (zyxnzyx)。

选择 l=1l=1,r=9r=9。子串 (zyxnzyx) 被删除并替换为 XYZNXYZ。

此操作后,S=S = XYZNXYZ。

移除括号后,字符串变为 XYZNXYZ,应输出它。

(((()))(()))(())

最终结果可能是空字符串。

dF(qT(plC())NnnfR(GsdccC))PO()KjsiI((ysA)eWW)ve
dFGsdccCrFNNnplCtQPOKjsiIwwEysAve

数据范围

  • 1S5×1051 \le |S| \le 5 \times 10^5
  • SS 由大写英文字母、小写英文字母、( 和 ) 组成。
  • SS 中的括号是正确匹配的。
难度 提高+/省选
通过率
尝试 0
已通过 0
ID
3275
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签