luogu#P9356. 「SiR-1」Bracket

「SiR-1」Bracket

题目背景

Everything that kills me makes me feel alive.

题目描述

Mirika 有一个长度为 nn 的括号序列 ss

对于一个括号序列 SS,Mirika 可以执行两种操作:

  • 变换:选择一个位置 ii 满足 1iS1 \leq i \leq \lvert S \rvert,使得 SS 变为 $S_iS_{i+1}\cdots S_{\lvert S\rvert}S_1S_2\cdots S_{i-2}S_{i-1}$。
  • 插入:在这个序列的 任意位置 插入一个括号(左右括号均可)。

Mirika 定义括号序列 SS 的权值 f(S)f(S) 为能将这个括号序列变成一个合法括号序列所需的最小操作数。

其中,合法括号序列的定义为:

  • 空串为 合法括号序列。
  • A\texttt A 为 合法括号序列,则 (A)\texttt{(A)} 为 合法括号序列。
  • A,B\texttt A, \texttt B 均为 合法括号序列,则 AB\texttt{AB} 也为 合法括号序列。

现在 Mirika 想要求出:

l=1nr=lnf(s[l,r])\sum_{l=1}^n \sum_{r=l}^n f(s[l,r])

其中 s[l,r]s[l,r] 表示由 sl,sl+1,,srs_l,s_{l+1},\cdots,s_r 形成的连续子序列。

但是 Mirika 太菜了不会算,于是只好求助于你。

输入格式

本题每个测试点内有多组数据。

第一行一个正整数 TT 表示测试数据组数。

对于每组数据,第一行一个正整数 nn

第二行一个长度为 nn 的括号序列 ss

输出格式

输出共 TT 行,第 ii 行一个整数表示第 ii 组测试数据的答案。

5
2
((
4
())(
5
()(()
5
()()(
15
()())(())))()()
4
11
16
12
241

提示

样例解释

对于 s=())(s = \texttt{())(}

  • 考虑 s[1,4]=())(s[1,4]=\texttt{())(}。执行变换操作 i=4i=4,有 ())((())\texttt{())(} \Rightarrow \texttt{(())},其中 (())\texttt{(())} 是合法括号序列,故 f(s[1,4])=1f(s[1, 4]) = 1。可以证明不存在更优的策略。
  • 考虑 s[2,4]=))(s[2,4]=\texttt{))(}。执行变换操作 i=2i=2,再在序列开头插入一个左括号,有 $\texttt{))(} \Rightarrow \texttt{)()} \Rightarrow \texttt{()()}$,其中 ()()\texttt{()()} 是合法括号序列,故 f(s[2,4])=2f(s[2, 4]) = 2。可以证明不存在更优的策略。

数据规模与约定

本题采用捆绑测试。

  • Subtask 0(15 pts):n400n \leq 400n800\sum n \leq 800
  • Subtask 1(20 pts):n2×103n \leq 2\times 10^3n4×103\sum n \leq 4\times 10^3
  • Subtask 2(5 pts):ss 内不含有右括号。
  • Subtask 3(10 pts):对于所有整数 1i<n1\le i < n,有 sisi+1s_i \neq s_{i+1}
  • Subtask 4(30 pts):n2×105n \leq 2\times 10^5n5×105\sum n \leq 5\times 10^5
  • Subtask 5(20 pts):无特殊限制。

对于所有数据,1T100001 \leq T \leq 100001n2×1061 \leq n \leq 2 \times 10^61n2×1071 \leq \sum n \leq 2 \times 10^7