#P16332. [DSDOI Round 1] 邓少笔记本

[DSDOI Round 1] 邓少笔记本

题目描述

邓少的笔记本上有一个长度为 nn 的括号序列 SS。SS 仅由 ()*\texttt{()*} 三种字符组成,其中 *\texttt{*} 可以变化成一个 (\texttt{(} 或 )\texttt{)}。

邓少认为一个括号序列是“好的”,当且仅当它满足以下条件:

对于该序列中 *\texttt{*} 的所有可能的变化,都存在一种在这个序列末尾恰好添加 kk 个任意括号的方式,使得整个序列成为合法的括号序列。

例如,当 k=3k=3 时,括号序列 (*(\texttt{(*(} 是“好的”。因为:

  • 当 *\texttt{*} 变化成 (\texttt{(} 时,存在括号序列 ((()))\texttt{((()))} 满足上述条件;
  • 当 *\texttt{*} 变化成 )\texttt{)} 时,存在括号序列 ()()()\texttt{()()()} 满足上述条件。

而当 k=3k=3 时,括号序列 *((\texttt{*((} 不是“好的”。因为当 *\texttt{*} 变化成 )\texttt{)} 时,没有任何一种在末尾恰好添加 kk 个任意括号的方式能使该括号序列合法。

需要注意的是,每个 *\texttt{*} 可独立变成任意一个括号。也就是说,每一个 *\texttt{*} 的变化情况都不会对其他任何 *\texttt{*} 的变化造成影响。

现在邓少找到了你,希望你告诉他,有多少个不同的 0≤x<n0 \le x < n 满足:将这个括号序列循环左移 xx 位后,形成的括号序列是“好的”。

输入格式

本题有多组测试数据。

第一行包含一个正整数 TT,表示数据组数。

接下来包含 TT 组数据,每组数据的格式如下:

第一行包含两个正整数 n,kn,k,含义如题所示。

第二行包含一个长为 nn 的字符串 SS,表示该括号序列。保证 SS 仅由 (\texttt{(}、)\texttt{)} 和 *\texttt{*} 三种字符组成。

输出格式

对于每组测试数据:

输出一行,包含一个整数,表示满足条件的 xx 的数量。

3
3 3
((*
5 1
()(**
10 8
(**)(((((*

2
0
3

提示

【样例解释】

对于第一组测试数据:

  • x=0x = 0,此时括号序列为 ((*\texttt{((*}。

    • 当 *\texttt{*} 变化成 (\texttt{(} 时,存在括号序列 ((()))\texttt{((()))} 满足要求;
    • 当 *\texttt{*} 变化成 )\texttt{)} 时,存在括号序列 (()())\texttt{(()())} 满足要求。
  • x=1x = 1,此时括号序列为 (*(\texttt{(*(}。

    • 当 *\texttt{*} 变化成 (\texttt{(} 时,存在括号序列 ((()))\texttt{((()))} 满足要求;
    • 当 *\texttt{*} 变化成 )\texttt{)} 时,存在括号序列 ()()()\texttt{()()()} 满足要求。
  • x=2x = 2,此时括号序列为 *((\texttt{*((}。

    • 当 *\texttt{*} 变化成 (\texttt{(} 时,存在括号序列 ((()))\texttt{((()))} 满足要求;
    • 当 *\texttt{*} 变化成 )\texttt{)} 时,括号序列为 )((\texttt{)((},无法通过在序列末尾添加 33 个括号使其变为合法括号序列。因此,x=2x=2 不合法。

综上,有两个 xx 满足要求,答案为 22。

对于第二组测试数据,不存在任何一种方法能满足要求。

对于第三组测试数据,只有 x=4,5,6x = 4,5,6 满足要求。

【数据范围】

对于所有测试数据,保证:

  • 1≤T≤101 \le T \le 10;
  • 1≤n,k≤1061 \le n,k \le 10^6;
  • (n+k) mod 2=0(n+k) \bmod 2 = 0;
  • SS 仅由 ()*\texttt{()*} 三种字符组成。
测试点编号 T≤T \le n,k≤n,k \le 特殊性质
11 1010 −-
22 55 ^ ^
3∼43 \sim 4 11 10310^3
5∼65 \sim 6 55 ^
77 ^ 10510^5 AA
88 ^ BB
99 CC
1010 −-
11∼1211 \sim 12 11 10610^6 ^
1313 55 ^ AA
1414 ^ BB
1515 CC
16∼2516 \sim 25 1010 −-
  • 特殊性质 AA:保证 n=kn = k。
  • 特殊性质 BB:保证 SS 仅由 (\texttt{(} 和 )\texttt{)} 组成。
  • 特殊性质 CC:保证 SS 仅由 (\texttt{(} 和 *\texttt{*} 组成。