欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF1970A1.Balanced Shuffle (Easy)
Balanced Shuffle (Easy)
题目描述
括号序列是仅由字符“(”和“)”组成的字符串,例如“(()((”。
平衡括号序列是指可以通过在其中插入数字和运算符后成为有效数学表达式的括号序列,例如“(()(()))”。
括号序列的平衡度定义为左括号“(”的数量减去右括号“)”的数量。例如,序列“(()((”的平衡度为 。
平衡括号序列也可以定义为平衡度为 ,且其每一个前缀的平衡度都不为负数的括号序列。
我们定义“平衡洗牌”操作如下:对于一个括号序列,首先,对于序列中的每一个字符,计算该字符之前的前缀的平衡度,并将其与该字符在原序列中的位置一起记录在表格中。例如:
$$\begin{aligned} \text{前缀平衡度} &\quad 0\ 1\ 2\ 1\ 2\ 3\ 2\ 1 \\ \text{位置} &\quad 1\ 2\ 3\ 4\ 5\ 6\ 7\ 8 \\ \text{字符} &\quad ( ( ) ( ( ) ) ) \end{aligned}$$然后,将表格的列按照前缀平衡度升序排序,若平衡度相同,则按位置降序排序。在上述例子中,排序后得到:
$$\begin{aligned} \text{前缀平衡度} &\quad 0\ 1\ 1\ 1\ 2\ 2\ 2\ 3 \\ \text{位置} &\quad 8\ 7\ 4\ 1\ 5\ 3\ 2\ 6 \\ \text{字符} &\quad ) ) ( ( ( ) ( ) \end{aligned}$$表格最后一行的字符依次组成新的括号序列,在本例中为“()(()())”。这个序列称为对原序列应用平衡洗牌操作的结果,简称为该序列的平衡洗牌。
给定一个平衡括号序列,请输出它的平衡洗牌。
输入格式
输入仅一行,包含一个只由“(”和“)”组成的字符串 。保证该字符串是非空的平衡括号序列,且长度不超过 。
输出格式
输出括号序列 ,即 的平衡洗牌。
说明/提示
由 ChatGPT 4.1 翻译
样例
(()(()))
()(()())
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |