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

[DSDOI Round 1] 邓少笔记本

题目描述

邓少的笔记本上有一个长度为 nn 的括号序列 SSSS 仅由 ()*\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{*} 的变化造成影响

现在邓少找到了你,希望你告诉他,有多少个不同的 0x<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 满足要求。

【数据范围】

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

  • 1T101 \le T \le 10
  • 1n,k1061 \le n,k \le 10^6
  • (n+k)mod2=0(n+k) \bmod 2 = 0
  • SS 仅由 ()*\texttt{()*} 三种字符组成。
测试点编号 TT \le n,kn,k \le 特殊性质
11 1010 -
22 55 ^ ^
343 \sim 4 11 10310^3
565 \sim 6 55 ^
77 ^ 10510^5 AA
88 ^ BB
99 CC
1010 -
111211 \sim 12 11 10610^6 ^
1313 55 ^ AA
1414 ^ BB
1515 CC
162516 \sim 25 1010 -
  • 特殊性质 AA:保证 n=kn = k
  • 特殊性质 BB:保证 SS 仅由 (\texttt{(})\texttt{)} 组成。
  • 特殊性质 CC:保证 SS 仅由 (\texttt{(}*\texttt{*} 组成。