A14886 | Bracket Sequence Deletion
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
You are given a bracket sequence consisting of $n$ characters '(' and/or )'. You perform several operations with it.
During one operation, you choose the shortest prefix of this string (some amount of first characters of the string) that is good and remove it from the string.
The prefix is considered good if one of the following two conditions is satisfied:
- this prefix is a regular bracket sequence;
- this prefix is a palindrome of length at least two.
A bracket sequence is called regular if it is possible to obtain a correct arithmetic expression by inserting characters '+' and '1' into this sequence. For example, sequences (())(), () and (()(())) are regular, while )(, (() and (()))( are not.
The bracket sequence is called palindrome if it reads the same back and forth. For example, the bracket sequences )), (( and )(() are palindromes, while bracket sequences (), )( and ))( are not palindromes.
You stop performing the operations when it's not possible to find a good prefix. Your task is to find the number of operations you will perform on the given string and the number of remaining characters in the string.
You have to answer $t$ independent test cases.
During one operation, you choose the shortest prefix of this string (some amount of first characters of the string) that is good and remove it from the string.
The prefix is considered good if one of the following two conditions is satisfied:
- this prefix is a regular bracket sequence;
- this prefix is a palindrome of length at least two.
A bracket sequence is called regular if it is possible to obtain a correct arithmetic expression by inserting characters '+' and '1' into this sequence. For example, sequences (())(), () and (()(())) are regular, while )(, (() and (()))( are not.
The bracket sequence is called palindrome if it reads the same back and forth. For example, the bracket sequences )), (( and )(() are palindromes, while bracket sequences (), )( and ))( are not palindromes.
You stop performing the operations when it's not possible to find a good prefix. Your task is to find the number of operations you will perform on the given string and the number of remaining characters in the string.
You have to answer $t$ independent test cases.
输入格式
The first line of the input contains one integer $t$ ( $1 \le t \le 10^4$ ) — the number of test cases. The next $2t$ lines describe test cases.
The first line of the test case contains one integer $n$ ( $1 \le n \le 5 \cdot 10^5$ ) — the length of the bracket sequence.
The second line of the test case contains $n$ characters '(' and/or ')' — the bracket sequence itself.
It is guaranteed that the sum of $n$ over all test cases do not exceed $5 \cdot 10^5$ ( $\sum n \le 5 \cdot 10^5$ ).
The first line of the test case contains one integer $n$ ( $1 \le n \le 5 \cdot 10^5$ ) — the length of the bracket sequence.
The second line of the test case contains $n$ characters '(' and/or ')' — the bracket sequence itself.
It is guaranteed that the sum of $n$ over all test cases do not exceed $5 \cdot 10^5$ ( $\sum n \le 5 \cdot 10^5$ ).
输出格式
For each test case, print two integers $c$ and $r$ — the number of operations you will perform on the given bracket sequence and the number of characters that remain in the string after performing all operations.
输入输出样例
输入 #1
5 2 () 3 ()) 4 (((( 5 )((() 6 )((()(
输出 #1
1 0 1 1 2 0 1 0 1 1
暂无题解
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted