括號深度的本質,其實就是刪除若干個字元以後使得左邊一半全是 (
,右邊一半全是 )
,最終 (
的個數的最大值。
那麼就一定存在一個位置使得在這個位置以及之前的字元中 (
的個數等於這個字元後 )
的個數。
考慮列舉這個位置,記它左邊的 (
的個數為 \(a\)、?
的個數為 \(x\),右邊的 )
的個數為 \(b\)、?
的個數為 \(y\),那麼易得這個位置對答案的貢獻為:
\[\sum_{i=0}^x(i+a){x\choose i}{y\choose i+a-b}
\]
然後就可以透過這題的弱化版了。考慮把括號拆開,兩個分別算貢獻。對於第一部分:
\[\begin{aligned}
&\sum_{i=0}^xi{x\choose i}{y\choose i+a-b}\\
=&\sum_{i=0}^xx{x-1\choose i-1}{y\choose i+a-b}\\
=&x\sum_{i=0}^x{x-1\choose i-1}{y\choose y-a+b-i}\\
=&x{x+y-1\choose y-a+b-1}
\end{aligned}
\]
對於第二部分:
\[\begin{aligned}
&\sum_{i=0}^xa{x\choose i}{y\choose i+a-b}\\
=&a\sum_{i=0}^x{x\choose i}{y\choose y-a+b-i}\\
=&a{x+y\choose y-a+b}
\end{aligned}
\]
最後兩個求一下和就做完了,時間複雜度 \(\mathcal{O}(n)\)。