【题解】P16958 [SCCPC 2026] 括号序列
https://www.luogu.com.cn/problem/P16958
对于 \(s\) 是 \(t\) 的前缀的情况是容易统计的。
考虑 \(s\) 在第 \(B\) 位上比 \(t\) 小,且 \(s\) 的前 \(B\) 位中有 \(A\) 个左括号。
那么合法的 \(s\) 有 \(f(A,B)=\sum_{l=0}^{\frac{n}{2}} \binom{2l-B}{l-A}-\binom{2l-B}{l-A-1}\)。
裂组合数得到:\(f(A,B)=\sum_{l=0}^{\frac n 2} \binom{2l-B-1}{l-A}+\binom{2l-B-1}{l-A-1}-\binom{2l-B-1}{l-A-1}-\binom{2l-B-1}{l-A-2}=\sum_{l=0}^{\frac n 2 } \binom{2l-B-1}{l-A}-\binom{2l-B-1}{l-A-2}=f(A,B+1)+f(A+1,B+1)\)。
当然,要注意当组合数上指标是 0 的边界情况,可以认为:\(f(A,2A+1)=0\),而 \(f(A,2A)=f(A+1,2A+1)+1\)。
再考虑
\[\begin{aligned}
f(A,B)-f(A+1,B+2)=&\sum_{l=0}^{\frac n 2} \binom{2l-B}{l-A}-\binom{2l-B}{l-A-1}-\left(\sum_{l=0}^{\frac n 2} \binom{2l-2-B}{l-1-A}-\binom{2l-2-B}{l-1-A-1}\right)\\
=&\sum_{l=0}^{\frac n 2} \binom{2l-B}{l-A}-\binom{2l-B}{l-A-1}-\left(\sum_{l=0}^{\frac n 2 -1} \binom{2l-B}{l-A}-\binom{2l-B}{l-A-1}\right)\\
=&\binom{n-B}{\frac{n}{2}-A}-\binom{n-B}{\frac{n}{2}-A-1}
\end{aligned}
\]
于是,如果我们维护 \(X=f(a,b),Y=f(a,b+1)\),可以递推到 \(f(a+1,b+1)\) 和 \(f(a,b+1)\),时间复杂度 \(O(n)\)。
浙公网安备 33010602011771号