ICode9

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

卡特兰数 学习笔记

2021-01-23 19:33:58  阅读:254  来源: 互联网

标签:红球 笔记 Cat 学习 choose 蓝球 2n 卡特兰


                          Catalan 数

基础概念 :

     一个长度为 \(2n\) 的序列 , 其中有 \(n\) 个 \(1\) 和 \(n\) 个 \(-1\) , 求有多少中排列方法使得任意前缀和大于等于 \(0\) ?

     答案为卡特兰数 \(Cat_{n} = \frac{{2n \choose n}}{n + 1}\)。

     推导过程 :

     考虑容斥 , 首先没有限制的方案数显然是 \({2n \choose n}\)。 对于不合法的情况 ,将第一次到达 \(-1\) 及其后面部分沿直线 \(y = -1\) 翻折。 那么就相当于将终点对应到了 \((2N , -2)\) , 进一步地 , 发现不合法方

     案数和从原点到 \((2N , -2)\) 的方案数构成双射。 方案数为 \({2n \choose n + 1}\)。所以总方案数 \({2n \choose n} - {2n \choose n + 1}\) , 进一步化简得到答案是 \(\frac{{2n \choose n}}{n + 1}\)。

     如图 (有一个 "线" 字打错了)

     注意也可以通过范德蒙德卷积公式把 \({2n \choose n}\) 展开。 为 \(\sum{{n \choose i}^2}\)。

     另外还存在两个递推式 :

     \(Cat_{n + 1} = \frac{4n - 2}{n + 2}Cat_{n}\)

     \(Cat_{n} = \sum{Cat_{i}Cat_{n - i - 1}}\)

     卡特兰数前 \(6\) 项 : \(1 , 1 , 2 , 5 , 14 , 42 , 132\)

     应用 :

      \(n\) 对括号的合法配对方案数量

      \(n\) 个节点的二叉树的形态数

      \(n + 1\) 个叶子 (\(n\) 个非叶节点) 的满二叉树的形态数 , 走到左儿子 \(+1\) , 走到右儿子 \(-1\) , 类似于括号匹配

      \(n\) 个数入栈后出栈的排列总数

例题 :

\(AGC021E\)

题解 :

      首先对于一条蛇而言 , 符合要求当且仅当满足两个条件之一 :

      \(1.\) 得到的最后一个求是蓝色的且它在整个过程中得到的红蓝球个数相等。 \(2.\) 得到的红球比蓝球多。

      设红球个数为 \(R\) , 蓝球为 \(B = K - R\)。

      对于 \(R < B\) 的情况 , 显然答案为 \(0\)。 \(R = B\) 的情况相对棘手 , 但注意到最后一个球必然是蓝色的 , 所以转化为 \((R , B - 1)\) 的情况。

      对于 \(R \geq B + N\) 的情况 , 显然答案是 \({R + B \choose R}\)。

      因此只需考虑 \(B < R < B + N\) 的情况。

      首先 , 对于这种情况 , 必然存在 \((N - (R - B))\) 条蛇 , 使得它们得到的红球和蓝球个数一样多 , 且最后一个球是蓝球。 而对于一条这样的蛇 , 如果其长度大于 \(2\) , 那么将其保留最后一个蓝球与前面一个红

      球必然优 , 所以对于这样的蛇得到球的顺序就是 \(RB\) , 问题转化为求是否能找到 \((N - (R - B))\) 对 \(RB\) , 进一步转化就是每个前缀满足蓝球至多比红球多 \((R - N)\) 个。

      不妨定义红球为向右走 , 蓝球为向上走 , 那么就是要求的就是走到 \((R , B)\) 且经过点都在直线 \(y = x + R - N\) 下面的方案数。

      考虑容斥 , 总数显然是 \({R + B \choose R}\) , 而对于不合法的情况可以用近似于卡特兰数证明的方法 , 翻转直线 , 因为所有不合法的折线与任意的走到 \((B − R + n − 1 , 2R − N + 1)\) 的折线之间建立了双

      射。方案数为 \({R + B \choose 2R - N - 1}\)。 故方案数是 \({R + B \choose R} - {R + B \choose 2R - N - 1}\)。 时间复杂度 : \(O(NlogN)\) (瓶颈在于求组合数)

\(P3974\)

题解 :

      首先总数是卡特兰数 \(Cat_{N}\)

      对于一棵 \(N\) 个节点的树 , 其删去一个叶子节点会对应一棵 \((N - 1)\) 个点的树 , 而对于一棵 \((N - 1)\) 个点的无根树 , 其加上一个点又对应着 \(N\) 个点的无根树。 这两者是一一对应关系。 故方案数 \(NCat_{N - 1}\)。 化简得到答案为 \(\frac{N(N + 1)}{4N - 2}\)。 时间复杂度 \(O(1)\)

      其实还有生成函数的推导方法

标签:红球,笔记,Cat,学习,choose,蓝球,2n,卡特兰
来源: https://www.cnblogs.com/evenbao/p/14318668.html

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

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

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

ICode9版权所有