CFCF2190B1.Sub-RBS (Easy Version)
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
本题为该问题的简单版本。不同版本间的差异在于:本版本仅需针对完整字符串 s 进行求解,且保证 s 是正则括号序列,同时对 n 的约束条件更宽松。
我们称括号序列 a 比括号序列 b 更优,当且仅当满足以下任一条件:
- b 是 a 的前缀,但 a=b;
- 设 i 是 a 和 b 第一个出现字符不同的位置(若存在),且满足 ai=( 且 bi=)。
给定一个长度为偶数 n 的正则括号序列∗ s。
在 s 的所有非空子序列† 中,找出满足以下条件的正则括号序列 t:
- t 是正则括号序列;
- t 比 s 更优。
请输出满足条件的 t 的最大可能长度。若不存在这样的 t,请输出 −1。
∗ 正则括号序列(Regular Bracket Sequence, RBS)的定义:将序列中原有字符间插入字符 1 和 + 后,能转化为合法算术表达式的括号序列。例如:
- 括号序列 ()() 和 (()) 是正则的(转化后的表达式分别为 (1)+(1) 和 ((1+1)+1));
- 括号序列 )(、( 和 ) 不是正则的。
† 子序列的定义:若序列 a 可通过删除序列 b 中任意位置的若干个(可能为 0 个或全部)元素得到,则称 a 是 b 的子序列。
输入格式
输入包含多组测试用例。第一行输入测试用例数 t(1≤t≤104),后续为各测试用例的描述。
每组测试用例的第一行输入一个整数 n(2≤n≤2⋅105,且 n 为偶数),表示字符串 s 的长度。
第二行输入一个长度为 n 的字符串 s,仅由字符 ( 和 ) 组成。
保证给定的序列 s 是正则括号序列。
保证所有测试用例的 n 之和不超过 2⋅105。
输出格式
对于每组测试用例,输出一个整数:满足条件的 s 的非空子序列 t(正则括号序列且比 s 更优)的最大可能长度。若不存在这样的 t,输出 −1。
输入输出样例
输入#1
3 2 () 8 (()(())) 6 (())()
输出#1
-1 6 -1
说明/提示
第一个样例中,s 唯一的非空正则括号子序列就是 t=s=()。由于 t 并不比 s 更优,因此输出 −1。
第二个样例中,可选择 t=((()))。t 和 s 第一个出现差异的位置是 i=3:t3=( 而 s3=),因此 t 比 s 更优。无法选择更长的子序列,因为唯一更长的正则括号子序列是 s 本身,而它并不比自身更优。因此输出 6。