#P17296. [ICPC 2026 Xi'an I] Palindromic and Balanced

    ID: 19706 远端评测题 2000ms 1024MiB 尝试: 0 已通过: 0 显示难度提高 上传者: 标签>区间 DPICPC2026省赛/邀请赛西安

[ICPC 2026 Xi'an I] Palindromic and Balanced

题目描述

Yuki 发现一个回文括号串不可能是平衡括号串,因此她设计了另一种定义回文平衡括号串的方式。

Yuki 按照如下规则定义了 回文括号串:

  • 空串是回文括号串。
  • (\texttt( 和 )\texttt) 是回文括号串。
  • 若括号串 ss 是回文括号串,则 (s(\texttt( s \texttt( 和 )s)\texttt) s \texttt) 是回文括号串。

Yuki 按照如下规则定义了 平衡括号串:

  • 空串是平衡括号串。
  • 若括号串 ss 是平衡括号串,则 (s)\texttt{(}s\texttt{)} 是平衡括号串。
  • 若括号串 s,ts,t 均是平衡括号串,则 stst(两括号串拼接起来)是平衡括号串。

对于一个括号串 s=s1…sns = s_1 \dots s_n,Yuki 定义 ss 是 回文平衡括号串,当且仅当:

  • s2…sn−1s_2 \dots s_{n-1} 是回文括号串。
  • s1…sns_1 \dots s_n 是平衡括号串。

特殊地,空串和 ()\texttt{()} 也为回文平衡括号串。

例如,(())()\texttt{(())()} 和 ()()(()())\texttt{()()(()())} 是回文平衡括号串,而 ((()))\texttt{((()))} 和 ()()(())\texttt{()()(())} 不是。

现在,Yuki 有一个长度为 nn 的括号串 ss,她希望找到一个 ss 的最长的子序列∗^\ast,使得该子序列是回文平衡括号串。不过 Yuki 并不知道怎么做,因此你需要帮助她求出 ss 的最长的满足条件的子序列的长度。

∗^\ast:称序列 aa 是序列 bb 的子序列,当且仅当序列 aa 能够通过在序列 bb 的基础上删除任意个元素(可以为 00 个)得到;特殊地,空序列是任何序列的子序列。

输入格式

本题包含多组测试数据。

第一行包含一个正整数 tt (1≤t≤5000)(1 \le t \le 5000),表示测试数据组数。

对于每组测试数据:

  • 第一行包含一个正整数 nn (1≤n≤5000)(1 \le n \le 5000)。
  • 第二行包含一个长度为 nn 的括号串 ss (si∈{(,)})(s_i \in \{\texttt(,\texttt)\})。

保证所有测试数据中 nn 的总和不超过 10410^4。

输出格式

对于每组测试数据,输出一行,包含一个整数,表示 ss 的最长的满足条件的子序列的长度。

3
5
(()((
7
)))((((
8
())(()()
2
0
6

提示

对于第 11 组测试数据:

  • 最长的满足条件的子序列为 s1s3=()s_1s_3 = \texttt{()} 和 s2s3=()s_2s_3 = \texttt{()},答案为 22。

对于第 22 组测试数据:

  • 最长的满足条件的子序列为空串,答案为 00。

对于第 33 组测试数据:

  • 最长的满足条件的子序列为 s1s2s4s5s6s8=()(())s_1s_2s_4s_5s_6s_8 = \texttt{()(())},答案为 66。