组合数学 随记

组合数学

1.母函数

母函数(生成函数):

生成函数有普通型生成函数和指数型生成函数两种(本题是普通型)。

形式上,普通型母函数用于解决多重集的组合问题,

指数型母函数用于解决多重集的排列问题。

母函数还可以解决递归数列的通项问题(例如使用母函数解决斐波那契数列,Catalan数的通项公式)。

1.普通母函数:  /*hdu2082*/

构造母函数G(x), G(x) = a0 + a1*x + a2* + a3* +....+ an*,  则称G(x)是数列a0,a1…an的母函数。

通常普通母函数用来解多重集的组合问题,其思想就是构造一个函数来解决问题,一般过程如下:

1.建立模型:物品n种,每种数量分别为k1,k2,..kn个,每种物品又有一个属性值p1,p2,…pn,(如本题的字母价值),

求属性值为m的物品组合方法数。(若数量ki无穷 也成立,即对应下面式子中第ki项的指数一直到无穷)

2.构造母函数:G(x)=(1++…)(1+++…)…(1+++…)        (一)

=a0 + a1*x + a2* + a3* +....+ akk*     (设kk=k1·p1+k2·p2+…kn·pn)  (二)

G(x)含义: ak 为属性值为k的组合方法数。

母函数利用的思想:

1.把组合问题的加法法则和幂级数的乘幂对应起来。

2.把离散数列和幂级数对应起来,把离散数列间的相互结合关系对应成为幂级数间的运算关系,最后由幂级数形式来

确定离散数列的构造。

代码实现:

求G(x)时一项一项累乘。先令G=1=(1+0*x+0*+…0*),再令G=G*(1++…)得到形式(二)的式子…最后令G=G*(1+++…)。

2.指数型母函数  /*hdu1521*/

指数型母函数:(用来求解多重集的排列问题)

n个元素,其中a1,a2,····,an互不相同,进行全排列,可得n!个不同的排列。

若其中某一元素ai重复了ni次,全排列出来必有重复元素,其中真正不同的排列数应为 ,即其重复度为ni!

同理a1重复了n1次,a2重复了n2次,····,ak重复了nk次,n1+n2+····+nk=n。

对于这样的n个元素进行全排列,可得不同排列的个数实际上是     /*hdu5651*/

若只对其中的r个元素进行排列呢,那就用到了指数型母函数。

构造母函数G(x)=+则称G(x)是数列a0,a1…an的指数型母函数。

一般过程:

1.建立模型:物品n种,每种数量分别为k1,k2,..kn个,求从中选出m个物品的排列方法数。

2.构造母函数:G(x)=(1+ + …+)(1+ ++…)…(1+ ++…)

=a0+a1·x+  ·  + · +… ·     (其中pp=k1+k2+k3…kn)

G(x)含义:ai为选出i个物品的排列方法数。

若题中有限定条件,只要把第i项出现的列在第i项的式中,未出现的不用列入式中。

如:物品i出现的次数为非0偶数,则原式改为…*(    +  +     )*…

2.Catalan数

卡特兰数(Catalan):前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670…

令h(0)=1,h(1)=1,catalan数满足递推式:

     h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2)

另类递推式:

递推关系的解为:

递推关系的另类解为:

对于在2n位的2进制中,有n个0,其余为1,且1的累计数>=0的累计数,二进制数有种

对于在n位的2进制中,有m个0,其余为1的catalan数为:

理解:catalan数的理解

应用:

1.出栈次序: 一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列?          h(n)种。   /*hdu1032*/

2.给定节点组成二叉树:给定n个节点,能构成多少种不同的二叉树?    h(n)种。

3.括号化:矩阵连乘,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,有几种括号化的方案?  h(n-1)种。

4.凸多边形三角划分:在一个凸n边形中,通过若干条互不相交的对角线,有多少种方法把这个多边形划分成若干个三角形? h(n-2)种。

/**/

3.容斥定理

容斥原理:(容许) 先不考虑重叠的情况,把包含于某条件中的所有对象的数目先计算出来,(排斥)然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复。

公式:            奇加偶减

一般求互质个数若用欧拉函数不好解决,则从反面考虑,用容斥。

时间: 2024-07-29 11:26:51

组合数学 随记的相关文章

组合数学漫游奇境记:Schur 多项式,Hook 长度公式,Macmahon 平面分拆公式

Young 表上的组合学是代数组合学中最奇妙的部分,与表示论,统计力学,概率论有着丰富而深刻的联系.这篇文章将从几个有趣的问题开始,带领大家走进这个美丽的领域.所需要的预备知识很少,学过线性代数即可,但是要真正领略其中风光,数学上的成熟是必不可少的. 需要事先剧透的是,本文要证明的几个定理绝非泛泛,它们都是代数组合学中的著名结论. 先来看几个问题: 有 $m$ 位总统候选人参加大选,他们每个人分别有 $\lambda_1,\ldots,\lambda_m$ 位支持者(假定选民只投票给他支持的候选

【组合数学】 06 - 组合设计

计数问题其实只是组合数学中的一小部分,以上也仅仅介绍了比较经典的结论.组合问题复杂多变,它们之间也少有联系,所以把组合数学称作一门学科并不准确.组合难题也会出现在各种益智趣题或竞赛难题中,随随便便就会出现一些未解的难题,所以我们也将止步于此.在结束本课之前,我决定再窥探一下组合问题中的一大类:组合设计.这些问题的关注点在如何布局元素,以满足一些特定要求,它们已然构成了组合学的众多分支. 1. 0-1矩阵 1.1 关联矩阵的秩 有的问题需要在两个集合\(A,B\)间建立联系,如果把\(A,B\)的

记第五届山东省ACM程序设计比赛——遗憾并非遗憾

记第五届山东省ACM程序设计比赛 5月10日上午9点半左右,我们的队伍从学校出发,一个多小时后到达本次比赛的地点-哈尔滨工业大学. 报道,领材料,吃午饭,在哈工大的校园里逛了逛,去主楼的自习室歇息了一会.然后參加下午两点到四点的热身赛.不得不吐槽一下热身赛的题目,第一个题题目的数据范围写的是十的六次方,我们写出来提交怎么也不正确,后来快结束时看讨论板,管理人员说数据范围是十的九次方,无语了.第二个题目无输入,仅仅输出1到20之间的一个随机整数,题目上也明白说了是拼人品的题目,有的队伍"人品比較好

THUSC2014酱油记

Day0: 坐飞机到北京,然后报到...跟jason_yu分到一个房间,刚好可以蹭点RP.发现房间460RMB/晚,但再带一份早餐就500RMB,难道早餐是40RMB么...在一家川菜馆吃的午晚餐,感觉不怎么样.听说Symen考的还行?又听说PKU总共去了50+个人,一本都要签20+个人?顿感Symen稳了. 晚上zcwwzdjn和leo来探望,说了几句就完了. Day1: 上午弄了个开幕式和合影.看到yangff大号来补报到,大号一来,我们这些小号立刻就加上了Buff.先照了张相,感觉还可以,

Hihocoder #1075 : 开锁魔法III (组合数学+动态规划)

题目链接 题目大意:有n个箱子,每个箱子中放着一个箱子的钥匙,可以用魔法打开k个箱子,问最终能打开所有箱子的概率是多少. 思路:首先我们想到,如果一组箱子的打开目标能构成一个环,那么这个箱子中只要打开一个就随意了.问概率的话,最好想的做法就是用A事件发生的次数/事件总数.事件总数很好求,就是在n个箱子中选择k个打开:C[n][k]. 然后考虑有多少种合法的打开方式,我开始想的是直接用组合数学乱搞,乘法原理,设一共有tot个环,每个环的大小分别是a1,a2,a3...atot;计算的时候先a1*a

组合数学之母函数问题

母函数问题是组合数学中非常经典的问题,大概是本科二年级的课程,很有意思的一门课,当然也是很精深的一门课. 定义 对于序列a0,a1,a2,-构造函数G(x): 则称函数G(x)是序列a0,a1,a2,-的母函数. 很明显,根据二项展开式,很容易知道(1+x)^n是序列C(n,0),C(n,1),-,C(n,n)的母函数.如果已知序列a0,a1,a2,-则对应的母函数G(x)便可根据定义给出.反之,如若已经求得序列的母函数G(x),则该序列也随之确定. 将序列a0,a1,a2,-记为{an} Ex

记第五届山东省ACM程序设计比赛——遗憾并不是遗憾

记第五届山东省ACM程序设计比赛 5月10日上午9点半左右,我们的队伍从学校出发,一个多小时后到达本次比赛的地点-哈尔滨工业大学. 报道,领材料,吃午饭,在哈工大的校园里逛了逛,去主楼的自习室休息了一会.然后参加下午两点到四点的热身赛.不得不吐槽一下热身赛的题目,第一个题题目的数据范围写的是十的六次方,我们写出来提交怎么也不对,后来快结束时看讨论板,管理人员说数据范围是十的九次方,无语了.第二个题目无输入,只输出1到20之间的一个随机整数,题目上也明确说了是拼人品的题目,有的队伍"人品比较好&q

Codeforces 717A Festival Organization(组合数学:斯特林数+Fibonacci数列+推公式)

Codeforces 717A Festival Organization(组合数学:斯特林数+Fibonacci数列+推公式) 牛逼题.....推公式非常的爽...虽然我是看了别人的博客才推出来的... 0.1 斯特林数 下面要用到的是带符号的第一类斯特林数. \(x^{n\downarrow}=\prod_{i=0}^{n-1}(x-i)=\sum_{k=0}^ns(n,k)x^k\) 有递推公式\(s(n,m)=s(n-1,m-1)-(n-1)*s(n-1,m)\) 0.2 斐波那契数列的

组合数学,容斥原理与反演

这一篇是一个专题总结,可能会写很久,希望不会咕掉 一.组合数学: ①.基本公式: 1.排列数公式$A_{n}^{m}=\frac{n!}{(n-m)!}$,表示从$n$个元素中选出$m$个元素并进行全排列的方案数 特别的,当$m=n$时,有$A_{n}^{n}=n!$(规定$0!=1$) 2.组合数公式$C_{n}^{m}=\frac{n!}{m!(n-m)!}$,表示从$n$个元素中选出$m$个元素的方案数 排列与组合的关系:$A_{n}^{m}=C_{n}^{m}m!$ 3.组合数常见的等式