CF1821E Rearrange Brackets

题目描述

一个“正规括号序列”是指可以通过在序列的原有字符之间插入字符 $1$ 和 $+$,将其转化为一个合法算术表达式的括号序列。例如: - 括号序列 "()()" 和 "(())" 是正规括号序列(对应的表达式分别为 "(1)+(1)" 和 "((1+1)+1)"); - 括号序列 ")(", "(" 和 ")" 不是正规括号序列。 现在给你一个正规括号序列。每次操作,你可以移除一对相邻的括号(左边是左括号,右边是右括号),然后将剩余部分按原顺序拼接。该操作的代价是这对括号右括号右侧剩余括号的数量。 一个正规括号序列的总代价定义为:将序列变为空所需操作的总代价最小值。 实际上,你并不会移除任何括号。你会得到一个正规括号序列和一个整数 $k$。你最多可以进行 $k$ 次如下操作: - 从序列中取出某个括号,并将其插入到任意位置(可以插入到任意两个括号之间、开头或结尾,也可以放回原位)。 所有操作完成后,括号序列仍需保持正规。请问,经过最多 $k$ 次操作后,所得正规括号序列的最小总代价是多少?

输入格式

第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例数量。 每个测试用例的第一行包含一个整数 $k$($0 \le k \le 5$),表示你最多可以进行的操作次数。 每个测试用例的第二行给出一个非空的正规括号序列,仅包含字符 '(' 和 ')'。 所有测试用例中括号序列的总长度不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出一个整数,表示经过最多 $k$ 次操作后,所得正规括号序列的最小总代价。

说明/提示

由 ChatGPT 4.1 翻译