一个合法的括号序列是这样定义的:
- 空串是合法的。
- 如果字符串
S是合法的,则(S)也是合法的。 - 如果字符串
A和B是合法的,则AB也是合法的。
现在给你一个长度为 n 的由(和)组成的字符串,位置标号从 1 到 n。对这个字符串有下列四种操作:
Replace a b c:将 [a,b] 之间的所有括号改成 c。假设原来的字符串为:))())())(,那么执行操作Replace 2 7 (后原来的字符串变为:)(((((()(。Swap a b:将 [a,b] 之间的字符串翻转。假设原来的字符串为:))())())(,那么执行操作Swap 3 5后原来的字符串变为:))))(())(。Invert a b:将 [a,b] 之间的(变成),)变成(。假设原来的字符串为:))())())(,那么执行操作Invert 4 8后原来的字符串变为:))((()(((。Query a b:询问 [a,b] 之间的字符串至少要改变多少位才能变成合法的括号序列。改变某位是指将该位的(变成)或)变成(。注意执行操作Query并不改变当前的括号序列。假设原来的字符串为:))())())(,那么执行操作Query 3 6的结果为 2,因为要将位置 5 的)变成(并将位置 6 的(变成)。