读入的字符串为 S,则我们将满足条件的括号串分为两类:是 S 的前缀的字符串,以及非 S 的前缀的字符串。
对于前者,直接枚举 S 的每个前缀,判断该前缀是否为合法括号串即可。
对于后者,我们枚举答案与 S 的 LCP 为 S[1: t-1]。那么我们考虑合法括号串的一个刻画:假设答案串的长度为 2l,现有一个二维平面,初始在 (0, 0),遇到 ( 就往右移动一个单位,遇到 ) 就往上移动一个单位。如果一条 (0, 0) \to (l, l) 的格路没有穿过 y = x(即没有碰到 y = x + 1),则这条路径对应的括号串是合法的。
假设我们在 S[1: t-1] 已经有了 a 个 (,b 个 )。显然若 S 和我们所构造的括号串的 LCP 长度为 t-1,我们必须要求括号串的第 t 位严格小于 S 的第 t 位,因此括号串的第 t 位必须为 (,S 的该位置必须为 )。因此当走完前 t 步,我们目前位于 (a+1, b) 的位置。则这种情形下,我们进一步枚举答案串长 2l,则合法的括号串个数等价于 (a+1, b) \to (l, l) 且不碰到 y = x+1 的路径条数。由经典反射容斥结论,这个方案数等于 (a+1, b) \to (l, l) 的自由路数量 \displaystyle{2l - a - b - 1 \choose l - a - 1},再减去 (a+1, b) \to (l-1, l+1) 的自由路数量 \displaystyle{2l - a - b - 1 \choose l - a - 2}。因此对于单个 t,答案就是
\sum_{l = 1}^{n / 2} {2l - a - b - 1 \choose l - a - 1} - \sum_{l = 1}^{n / 2}{2l - a - b - 1 \choose l - a - 2}
现考虑这个式子的前半部分:记 x = l - a - 1,则 2l - a - b - 1 = 2x + a - b +1。又因为 l \le n/2,因此 x \le n/2 - a - 1。有
\sum_{l = 1}^{n / 2} {2l - a - b - 1 \choose l - a - 1} = \sum_{x = 0}^{n/2 - a - 1} {2x + a - b + 1 \choose x}
同理我们可以整理原式的第二项:
\sum_{l = 1}^{n / 2}{2l - a - b - 1 \choose l - a - 2} = \sum_{x = 0}^{n/2 - a - 2} {2x + a - b + 3 \choose x}