Catalan&Stirling数

Tags:数学

作业部落

评论地址


Catalan数

\(1,1,2,5,14,42,132,429,1430,4862,16796,58786...\)
定义式
\[C[x+1]=C[0]C[x]+C[1]C[x-1]+C[2]C[x-2]...+C[x]C[0]\]

一、递推公式

\[C[n]=\frac{C[n-1]*(4*n-2)}{n+1}\]\[C[n]=\frac{C(2n,n)}{n+1}\]\[C[n]=C(2n,n)-C(2n,n-1)\]

二、应用举例

  • 给定\(N\)个节点,能构成多少种不同的二叉树?(\(C[N]\)种,相当于钦定根之后左右子树有\(0..n\)中选择,用定义式解释)
  • 售票处没有零钱,\(n\)个\(5\)元\(n\)个\(10\)元的人,多少种排列可以满足每次都可以给\(10\)元的找零?(\(C[n]\)种,出栈序列,用定义式解释)
  • 在圆上选择\(2n\)个点,将这些点成对连接起来使得所得到的\(n\)条线段不相交的方法数?(\(C[n]\)种,相当于括号序列,左括号和右括号匹配,然后转化为出栈序列)

第一类Stirling数

此处只讨论无符号\(Stirling\)数

s[n][k]) k=0 k=1 k=2 k=3
n=0 1
n=1 0 1
n=2 0 1 1
n=3 0 2 3 1
n=4 0 6 11 6
n=5 0 24 50 35
n=6 0 120 274 225

一、定义

s[n][k]表示将n个不同的元素构成k个圆排列的方案数
定义式为(\(x^{n↑}\)表示\(x\)的\(n\)次上升幂)\[x^{n↑} =x(x+1)(x+2)...(x+n-1)\\ =s[n][0]+s[n][1]*x+s[n][2]*x^2+...+s[n][n]*x^n\]

二、递推式

\[s[n][k]=s[n-1][k-1]+(n-1)*s[n-1][k]\]两种证明:
1、将第\(n+1\)个元素插入,那么可以新开一个圆\(+s[n][k-1]\),或者插入原来的圆中\(+n*s[n][k]\)
2、\(x^{(n+1)↑}=x^{n↑}*(x+n)\)通过这个式子得到

三、性质

dalao_blog
baike_baidu
\[s[1][1]=1,s[n][0]=s[n][k]=0,(n>0,k>n)\]\[s[n][1]=(n-1)!\]\[\sum_{k=0}^{n}s[n][k]=n!\]
可以做下这题:HN2018省队集训 6.25T2

第二类Stirling数

S[n][k]) k=0 k=1 k=2 k=3
n=0 1
n=1 0 1
n=2 0 1 1
n=3 0 1 3 1
n=4 0 1 7 6
n=5 0 1 15 25
n=6 0 1 31 90

一、定义

表示n个有区别的球放入k个相同的盒子中的方案数
也就是将n个数拆成k个非空部分的方案数

二、递推式

\[S[n][k]=S[n-1][k-1]+k*S[n-1][k]\]意思为第\(n\)个球可以新开一个盒子也可以放在原来的盒子中

三、计算式

\[S[n][k]=\frac{1}{k!}[k^n-C[k][1](k-1)^n+C[k][2](k-2)^n-...+(-1)^{k-1}C[k][k-1]1^n]\]也就是\[S[n][k]=\frac{1}{k!}\sum_{i=0}^{k}(-1)^iC[k][i](k-i)^n\]把组合数给拆掉\[S[n][k]=\sum_{i=0}^{k}\frac{(-1)^i(k-i)^n}{i!(k-i)!}\]就化成了卷积的形式了,可以用\(NTT\)在\(O(nlogn)\)时间内求得\(S[n]\)
原理是把n个有区别的球放入k个有区别的盒子里的方案数是\(k!S[n][k]\),也是至少有0个空盒的方案数-至少有1个空盒的方案数+至少有两个空盒的方案数......属于组合数类型的容斥

四、拓展

1、把\(n\)个区别的球放入\(k\)个区别的盒子里不能有空盒的方案数
2、把\(n\)个区别的球放入\(k\)个区别的盒子里允许有空盒的方案数
前者是\(k!*S[n][k]\),表示盒子进行排列
后者是\(C(n+k-1,n)\),相当于在\(k\)中元素中取\(n\)个作为允许重复的组合,可重组合公式见《组合数学》\(P20\)

Catalan&Stirling数的更多相关文章

  1. 整理一点与排列组合有关的问题[组合数 Stirling数 Catalan数]

    都是数学题 思维最重要,什么什么数都没用,DP直接乱搞(雾.. 参考LH课件,以及资料:http://daybreakcx.is-programmer.com/posts/17315.html 做到有 ...

  2. Stirling数,Bell数,Catalan数,Bernoulli数

    组合数学的实质还是DP,但是从通式角度处理的话有利于FFT等的实现. 首先推荐$Candy?$的球划分问题集合: http://www.cnblogs.com/candy99/p/6400735.ht ...

  3. Bell数和Stirling数

    前面说到了Catalan数,现在来了一个Bell数和Stirling数.什么是Bell数,什么是Stirling数呢?两者的关系如何,有用于解决什么算法问题呢? Bell数是以Bell这个人命名的,组 ...

  4. lightOJ 1326 Race(第二类Stirling数)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1326 题意:有n匹马赛跑.问有多少种不同的排名结果.可以有多匹马的排名相同. 思路:排 ...

  5. 斯特灵数 (Stirling数)

    @维基百科 在组合数学,Stirling数可指两类数,都是由18世纪数学家James Stirling提出的. 第一类 s(4,2)=11 第一类Stirling数是有正负的,其绝对值是个元素的项目分 ...

  6. hdu 4372 第一类stirling数的应用/。。。好题

    /** 大意: 给定一系列楼房,都在一条水平线上,高度从1到n,从左侧看能看到f个, 从右侧看,能看到b个,问有多少种这样的序列.. 思路: 因为肯定能看到最高的,,那我们先假定最高的楼房位置确定,那 ...

  7. HDU 3625 Examining the Rooms:第一类stirling数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3625 题意: 有n个房间,每个房间里放着一把钥匙,对应能开1到n号房间的门. 除了1号门,你可以踹开任 ...

  8. HDU 4372 Count the Buildings:第一类Stirling数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4372 题意: 有n栋高楼横着排成一排,各自的高度为1到n的一个排列. 从左边看可以看到f栋楼,从右边看 ...

  9. [总结] 第二类Stirling数

    上一道例题 我们来介绍第二类Stirling数 定义 第二类Stirling数实际上是集合的一个拆分,表示将n个不同的元素拆分成m个集合的方案数,记为 或者 .和第一类Stirling数不同的是,集合 ...

随机推荐

  1. WCF3.5 SP1 参考源码索引

    http://www.projky.com/dotnet/WCF3.5SP1/Microsoft/InfoCards/AccessibilityApplicationManager.cs.htmlht ...

  2. RAC性能分析 - gc buffer busy acquire 等待事件

    概述---------------------gc buffer busy是RAC数据库中常见的等待事件,11g开始gc buffer  busy分为gc buffer busy acquire和gc ...

  3. [翻译] UIColor-uiGradientsAdditions

    UIColor-uiGradientsAdditions https://github.com/kaiinui/UIColor-uiGradientsAdditions Beautiful color ...

  4. 使用UISearchDisplayController

    使用UISearchDisplayController 虽然UISearchDisplayController名字中带有controller,可他不是一个UIView相关的controller,因为, ...

  5. 作业一 制作PC配置 吴昊

  6. php实现菲波那切数列和杨辉三角

    1.递归  显示斐波那契数列 <?PHP         function recursion($num){               //判断是否小于0               if($ ...

  7. MyISAM和innoDB对比,覆盖索引简单回顾

    MyISAM Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默认使用Myisam. 它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以 ...

  8. DOM操作案例之--全选与反选

    全选与反选在表单类的项目中还是很常见的,电商项目中的购物车一定少不了这个功能. 下面我只就用一个简单的案例做个演示吧. <div class="wrap"> <t ...

  9. Python 3 实现定义跨模块的全局变量和使用

    尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖. Python 中 global 关键字可以定义一个变量为全局变量,但 ...

  10. PHP MemCached高级缓存配置图文教程

    memcache是一个高性能的分布式的内存对象缓存系统,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等.     1.Memcache相关介绍 memcache是一个高性能的 ...