CF1264D2 Beautiful Bracket Sequence (hard version) 题解
括号深度的本质,其实就是删除若干个字符以后使得左边一半全是 (
,右边一半全是 )
,最终 (
的个数的最大值。
那么就一定存在一个位置使得在这个位置以及之前的字符中 (
的个数等于这个字符后 )
的个数。
考虑枚举这个位置,记它左边的 (
的个数为 \(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)\)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现