A7094 | 月环封印
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
雾港学宫的封印符文是一圈括号组成的环。把符文从任意处切开、摊平成串记为 $s$,长度为偶数 $n$,字符仅为
在所有“先换一次、再任选一个切口(循环位移)”的方案中,设 $g$ 为能得到正规括号序列的切口个数的最大值。请你输出这个最大值 $g$,以及任取一对达到该最大值的交换位置 $(l,r)$($1$-下标,环上计数)。
- 若不进行交换即可达到最大值,也要求输出一对 $(l,r)$(可以输出 $l=r$ 表示“不交换”)。
'(' 与 ')'。你可以在切开之前对整圈符文做一次换位:选定两个位置,交换它们上的字符(仍然是环上的交换)。随后从环上任意处切开摊平(等价于对串做任意循环位移),检查是否是一条正规括号序列。在所有“先换一次、再任选一个切口(循环位移)”的方案中,设 $g$ 为能得到正规括号序列的切口个数的最大值。请你输出这个最大值 $g$,以及任取一对达到该最大值的交换位置 $(l,r)$($1$-下标,环上计数)。
- 若不进行交换即可达到最大值,也要求输出一对 $(l,r)$(可以输出 $l=r$ 表示“不交换”)。
输入格式
- 第一行一个偶数 $n$;
- 第二行一个长度为 $n$ 的字符串 $s$(仅含
- 第二行一个长度为 $n$ 的字符串 $s$(仅含
'(' 与 ')')。输出格式
- 一行输出三个整数:$g,\ l,\ r$。要求交换 $s_l$ 与 $s_r$(环上位置),使得在该交换后,对循环位移的切口计数达到 $g$ 的最大值。
输入输出样例
输入 #1
6 )()()(
输出 #1
3 2 2
输入 #2
8 (()))(((
输出 #2
0 3 6
数据范围
- $2\le n\le 2\times 10^5$,$n$ 为偶数;
- $s$ 仅含
'(' 与 ')'。| 层级 | $n$ 范围 |
|---|---|
| A | $1\le n\le 20$ |
| B | $20< n\le 500$ |
| C | $500< n\le 2\times 10^5$ |
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?