版权声明:原创文章,转载要注明作者哦 https://blog.csdn.net/DYT_B/article/details/81217070
数学基础:公式大全:
m∗Cnm=n∗Cn−1m−1
拆开来看一看啊
Cn0+Cn1+Cn2...+Cnn=2n
这个应该比较显然,对于每一个数,选或者不选。
1Cn1+2Cn2+3Cn3...+nCnn=n2n−1
结合第一个式子,把每一项的系数变成n,然后提出来,用第二个式子即可
12Cn1+22Cn2+32Cn3...+n2Cnn=n(n+1)2n−2
把前面几个式子合并变形一下就好了。
1Cn1−2Cn2+3Cn3...+(−1)n−1nCnn=1+21+31+...+n1
23333
建模:小球和盒子
我们知道排列组合的经典模型就是小球和盒子的问题,
那么我们就可以罗列一下:
假设:N个球,M个盒子
球相同,盒相同,可以为空:
好像只能递推:
f[i][j]=f[i−1][j−1]+f[i−j][j]
球相同,盒相同,不能为空:
可以利用一下上一种情况的结果:
f[i][j]−f[i][j−1]就可以了
球不同,盒不同,可以为空:
直接:
nm
球不同,盒相同,不能为空:
相当于第二类斯特林数,DP解决:
f[i][j]=j∗f[i−1][j]+f[i−1][j−1]
球不同,盒不同,不能为空:
比上一种情况多了一个盒不同的条件,我们先假装盒相同,然后再把上一种的答案
∗m!就好了。
球不同,盒相同,可以为空:
暴力枚举有几个盒子有球,直接DP解决。
球相同,盒不同,不能为空:
隔板法解决:
Cn−1m−1
球相同,盒不同,可以为空:
Cn+m−1n−1
一些其他的姿势:
错位排列:
f[n]=(i−1)∗(f[n−1]+f[n−2])
圆排列:固定一个点先,其他的点随便排,方案就是:
(n−1)!
重复排列(每个点出现ai次):
a1!+a2!+...+an!n!
斯特林数:戳这里
卡特兰数:
Catn=n+1C2nn=C2nn−C2nn+1