组合数学 排列组合问题 卡特兰数 母函数

1.排列组合

2.抽屉原理 容斥原理 错排问题

3.卡特兰数

4.母函数

多重集的排列组合
分拆数/整数拆分
斐波那契数
斯特林数
贝尔数
伯努利数
康托展开
Polya计数

排列

从n个不同元素中取出r(r≤n)个元素的所有排列的个数
组合数学 排列组合问题 卡特兰数 母函数_第1张图片

组合

从n个不同元素中取出r(r≤n)个元素的所有组合的个数
组合数学 排列组合问题 卡特兰数 母函数_第2张图片

二项式定理
在这里插入图片描述
在ACM竞赛中,我们常常需要计算
在这里插入图片描述

方法一 打表
时间复杂度 O(N*M)

for(int i=0;i<=n;i++){
c[i][0]=c[i][i]=1;
for(int j=1;j c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
}

方法二 预处理
组合数学 排列组合问题 卡特兰数 母函数_第3张图片

预处理出1~maxn的阶乘

计算的时候用n的阶乘 去除以 m的阶乘的逆元 和 n-m阶乘的逆元 得到答案

方法三 卢卡斯定理

求C(n, m) % p , n<=1e18 m<=1e18 p<=1e5 p是素数

C(n, m) % p = C(n / p, m / p) * C(n%p, m%p) % p

LL lucas(LL a, LL b, LL p) {
if (a < p && b < p) return C(a, b, p);
return (LL)C(a % p, b % p, p) * lucas(a / p, b / p, p) % p;
}

组合数学 排列组合问题 卡特兰数 母函数_第4张图片
组合数学 排列组合问题 卡特兰数 母函数_第5张图片

抽屉(鸽巢)原理
就比如说,你有n+1个苹果,想要放到n个抽屉里,那么必然会有至少一个抽屉里有两个(或以上)的苹果。

容斥原理
把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复。
例:
爱吃锅包肉的一共20人,爱吃铁锅炖的
一共15人,都爱吃的一共3人,问总共
多少人?20+15-3=32

错排问题
十本不同的书放在书架上。现重新摆放,使每本书都不在原来放的位置。有几种摆法?
D(n) = (n-1) [D(n-2) + D(n-1)]
组合数学 排列组合问题 卡特兰数 母函数_第6张图片

长度为2n的合法括号序列个数
n个不同的数依次进栈,求不同的出栈结果的种数

n个 点构成的不同构满二叉树的个数

n*n方格中走交点不越过对角线的单调路径个数

凸n+2边形的三角形剖分方案数

路径计数延伸问题

总言之,卡特兰数的应用都可以归结到一种情况:
有两种操作,分别为操作一和操作二,它们的操作次数相同,都为 N,且在进行第 K 次操作二前必须先进行至少 K 次操作一,问有多少中情况?结果就Catalan(N)。

母函数(生成函数)

“母函数就是一列用来展示一串数字序列的挂衣架”
——赫伯特·维尔夫

母函数可分为很多种,包括普通母函数、指数母函数、L级数、贝尔级数和狄利克雷级数。构造母函数的目的一般是为了解决某个特定的问题,因此选用何种母函数视乎序列本身的特性和问题的类型。

组合数学 排列组合问题 卡特兰数 母函数_第7张图片
在这里插入图片描述
G(x)被称作母函数 母函数只是框架
c0,c1,c2…的系数序列 才是重点

问题:
同时掷出两个骰子,两个骰子的数相加为 6 的情况有多少种?

第一个骰子可能是
1 2 3 4 5
第二个骰子可能是
一 二 三 四 五
结果为 五种
1五 2四 3三 4二 5 一

问题:
同时掷出两个骰子,两个骰子的数相加为 6 的情况有多少种?
组合数学 排列组合问题 卡特兰数 母函数_第8张图片

(x^1 + x^2 + x^3 + x^4 + x5)*(x一 + x^二 + x^三 + x^四 + x^五)

组合数学 排列组合问题 卡特兰数 母函数_第9张图片
在这里插入图片描述

拆开后,多项式中以x为底,幂为n的项的 系数,即为答案
母函数就是一列用来展示一串数字序列的挂衣架

你可能感兴趣的:(数据结构)