卡特兰数 学习笔记

                          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)\)

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

来源:https://www.icode9.com/content-4-832001.html

(0)

相关推荐

  • 卡特兰数通项公式的发现历程

    --从一道组合问题说起 (2021 年 1 月 THUSSAT 理科数学第 14 题)现将大小和形状相同的 4 个黑球和 4 个红球排成一排,从左边第一个球开始数,不管数几个,黑球不少于红球的排法有_ ...

  • 七大排序算法总结

    以下所有动图均来源于一像素博客园 以下代码均使用C 编写 完整代码请到这里下载 稳定排序算法:冒泡排序.插入排序.归并排序 时间复杂度不受数据影响:选择排序.归并排序.堆排序 时间复杂度基本小于n2: ...

  • 在ecshop后台加产品默认非上架状态

    ecshop默许增加新商品后默许为"上架"状况,出于某种思考,可让新增加商品后默许为"下架"状况,在后台预览满足后,再批量上架. 查找/admin/goods. ...

  • 保本盈利大奖”的预测_教你预测彩票

    "保本盈利大奖"的预测_教你预测彩票 彩票的混沌与分形预测像天气预报一样具有季节性, 不可能天天都是好天气,就不可能期期选号.也不可能期期中奖.就是说, 任何科学的预测在具有非周期 ...

  • 紫薇斗数学习笔记(一)——天干地支算法

    天干地支,简称干支,源自我国古代对天象的观测.其中: 天干:甲.乙.丙.丁.戊.己.庚.辛.壬.癸 地支:子.丑.寅.卯.辰.巳.午.未.申.酉.戌.亥 快速计算,不用查询万年历,口头计算: 1) 天 ...

  • 紫薇斗数学习笔记(二)——怎样配宫干

    紫薇斗数推命术以命盘为论命基础,命盘正方形.四边等分为四,做出四个正方形,周边相连,成为十二宫.中间如一口井,注上问命人的姓名和出生年月日时(农历). 十二宫的地支是固定的.按顺序固定排列,暗合一年十 ...

  • 紫薇斗数学习笔记(三)——怎样让十二宫就位

    要让十二宫就位,则先确定命宫,十二宫的位置以命宫为基点.命宫和身宫同是根据问命人的出生月份和出生时辰决定的. 命宫和身宫的找法: 问命人的出生年的月份是几月份,就把那个位置当作子时,以子时为基点,逆时 ...

  • 《二二数数》学习笔记

    各位小朋友早上好! 数数除了1个1个地数,还能够2个2个地数,3个3个地数,5个5个地数-- 在多种多样的数数方式中,孩子的数感将大大增强,掌握加减乘除的最根本能力. 赶紧打开[叫叫学院]APP开始今 ...

  • 一则公报案例学习笔记:对修改股东出资期限应否适用资本多数决规则的思考|审判研究

    一.问题的提出 2021年第3期<最高人民法院公报案例>刊登了鸿大(上海)投资管理有限公司与姚锦城公司决议纠纷上诉案,裁判要旨为:"公司股东滥用控股地位,以多数决方式通过修改出资 ...

  • JAVA多线程学习笔记整理

    多线程: 三种创建方法 继承Thread类,以线程运行内容重写run方法,创建Thread对象并用start方法启动该线程. (匿名内部类) (Lambda表达式) 实现Runable接口,以线程运行 ...

  • 周哥学习笔记(2021.5.8)

    心理界限存在的意义,正是为了帮助人们控制情绪进入的量,不至于太过冷漠或太过投入,让我们保持一个合适的距离与外界互动. 人没有办法只通过吸收变得更美好和丰富,它必须通过大胆的碰撞和创造.如果不能保持足够 ...

  • 【学习笔记】控制角色移动的N种方法,但都离不开重复执行

    [学习笔记]控制角色移动的N种方法,但都离不开重复执行 今天我们讲一下控制角色移动的多种方法,因为缺少操作实例,希望课下同学们结合例子好好练习. 首先,我们说一下控制角色移动的多种方法.最比较常见的就 ...

  • 胡希恕伤寒论学习笔记——42

    42.太阳病,外证未解,脉浮弱者,当以汗解,宜桂枝汤. 字面意思是说:太阳病,外证依然存在,脉是浮弱的,治疗上依然需要通过出汗的方法,这时应该用桂枝汤一类的方剂. "宜"字说明不是 ...