CF1374C.Move Brackets

传统题 时间 2000 ms 内存 256 MiB 5 尝试 11 已通过 9 标签

Move Brackets

题目描述

给定一个长度为 nn 的括号序列 ss。nn 为偶数,且 ss 中恰好有 n2\frac n2 个左括号 ( 和 n2\frac n2 个右括号 )。

一次操作中,你可以任选一个括号,把它从原位置删除,再放到整个字符串的开头或结尾。求最少操作次数,使 ss 变成一个合法括号序列。题目保证在给定条件下总能做到。

合法括号序列的定义如下:

  • () 是合法括号序列;
  • 若 ss 是合法括号序列,则 ( + ss + ) 也是合法括号序列;
  • 若 s,ts,t 都是合法括号序列,则 s+ts+t 也是合法括号序列。

例如,()()、(())()、(()) 和 () 都是合法括号序列;)(、()( 和 ))) 都不是。

需要独立回答 tt 组测试数据。

输入格式

第一行一个整数 tt(1≤t≤20001\le t\le2000),表示测试组数。

每组数据第一行一个偶数 nn(2≤n≤502\le n\le50),表示字符串长度;第二行一个长度为 nn 的字符串 ss,其中恰有 n2\frac n2 个 ( 和 n2\frac n2 个 )。

输出格式

对每组数据输出一个整数,表示把 ss 变为合法括号序列所需的最少操作次数。

样例

样例 1

输入:

4
2
)(
4
()()
8
())()()(
10
)))((((())

输出:

1
0
1
3

在线编程 IDE

建议全屏模式获得最佳体验