ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[组合计数题单]括号序列

2021-02-15 17:36:02  阅读:323  来源: 互联网

标签:计数 min 括号 ge choose 序列 2k 题单


目录

只有括号不会,不会就是不会,见到多少次都不会......

壹、题目

求有多少个长度为 \(n\) 的括号序列满足其所有子序列中最长合法括号子序列的长度恰好为 \(2k\),多组数据。

数据范围:\(n,T\le 2\times 10^5,k\le n\).

贰、题解

考虑将 ( 设为 \(1\),将 ) 设为 \(-1\),然后求前缀和得到 \(s_i\),那么,一个序列的最长合法括号子序列的长度就是 \(n-s_n-2|\min\{s_i\}|\).

至于这个结论是怎么证的,我们考虑从整个序列长度减去没用到的右括号与左括号,就是最长的,对于没有用到的右括号,实际上就是 \(|\min\{s_i\}|\),放到二维坐标系上是这样

每次,只要这个函数超过了之前的最小值,那么它就浪费了一个右括号,所以总共浪费的右括号就是 \(|\min\{s_i\}|\).

至于没有用到的左括号,其实就是 \(s_n+|\min\{s_i\}|\)(就是最后剩下的从最低点到最后的那一节),所以总共就是 \(n-|\min\{s_i\}|-(s_n+|\min\{s_i\}|)=n-s_n-2|\min\{s_i\}|\).

所以我们就是要找一个长度为 \(n\) 的括号序列满足 \(n-s_n-2|\min\{s_i\}|=2k\),也就是必须满足 \(s_n=n-2k-2|\min\{s_i\}|\).

暴力一点,枚举 \(\min\{s_i\}=t,|\min\{s_i\}|=-t\)(因为至少有 \(s_n=0\),所以一定满足 \(\min\{s_i\}\le 0\))则 \(s_n=n-2k+2t\),至于怎么求 \(\min\{s_i\}=t\),考虑使用简单的容斥,将 \(\min\{s_i\}\ge t\) 的方案减去 \(\min\{s_i\}\ge t-1\) 的方案,而这个东西,实际上就是

这条折线始终在 \(y=t\) 的上方(可触碰),最后到达 \(s_n\),即从 \((0,0)\) 走到 \((n,s_n)\) 而不经过 \(y=t-1\),这个是什么?这是翻折引理,方案数就是没有限制的方案数减去按直线翻折后终点的方案数,即

\[{n\choose {n-s_n\over 2}}-{n\choose {n-(2(t-1)-s_n)\over 2}}={n\choose t-k}-{n\choose n-k+1} \]

对于 \(\min\{s_i\}\ge t-1\) 的方案数,就是

\[{n\choose {n-s_n\over 2}}-{n\choose {n-(2t-s_n)\over 2}}={n\choose t-k}-{n\choose n-k} \]

最后的总方案数就是

\[{n\choose t-k}-{n\choose n-k+1}-{n\choose t-k}+{n\choose n-k}={n\choose k}-{n\choose k-1} \]

这个东西似乎和 \(t\) 无关,但是我们得考虑这个 \(t\) 有好多取值,由于 \(t\) 满足不等式 \(s_n\ge \min\{s_i\}\Leftrightarrow n-2k+2t\ge t\Rightarrow t\ge 2k-n\),所以最后的答案就是

\[(2k-n)\left({n\choose k}-{n\choose k-1}\right) \]

这个东西,话说这到底是怎么想到的......

叁、用到の小 \(\tt trick\)

重要定理:

对于一个括号子序列,考虑将 ( 设为 \(1\),将 ) 设为 \(-1\),然后求前缀和得到 \(s_i\),那么,这个序列的最长合法括号子序列的长度就是 \(n-s_n-2|\min\{s_i\}|\).

翻折定理,从 \((0,0)\) 走到 \((x,y)\) 而不经过 \(y=k\) 的方案数,就是没有限制的方案数减去按直线翻折后终点的方案数。

对于没有用到的右括号,实际上就是 \(\max\{|s_i|\}\),也就是 \(|\min\{s_i\}|\),这个怎么理解,假如说我们的 \(s_i\) 放到二维坐标系上是这样

标签:计数,min,括号,ge,choose,序列,2k,题单
来源: https://www.cnblogs.com/Arextre/p/14404045.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有