点击查看目录
1.组合数学基础
排列数 Amn=n!(n−m)! 相当于从 Ann 中除去了 An−mn−m
组合数 (nm)=n!m!(n−m)! 相当于把 Amn 除去了顺序,不再赘述
错位排列
它计数的是这样一类问题的答案:对于 n 个小球,每个小球都有其不能放进的一个互不相同的盒子,求方案数
我们设对于 n 个小球的方案数为 Dn
通过观察不难发现, D1=0,D2=1
我们对于第 n 个小球分类讨论,寻找其规律
可以发现,所有球都放错的情况与有两个球放对的情况一一对应
1.如果第 n 个小球放对了,那肯应有 n−2 个小球放错了,有 Dn−1 种情况,剩下的一个又有 n−1 种情况,故为 (n−1)Dn−2 种
2.如果第 n 个小球放错了,那么剩下的同理,有 (n−1)Dn−2
所以它的递推公式为 Dn=(n−1)(Dn−1+Dn−2) 或 Dn=nDn−1+(−1)n
圆排列
这相对来说比较简单,问 n 个人转圈排列的方案数,考虑把每种情况转一圈,正好有n种重复情况,所以情况数为 (n−1)!
二项式定理
一个式子:
(a+b)n=n∑i=0(ni)aibn−i
从组合意义考虑,选了 i 个 a 的情况数就是 (ni)
一些问题
- 从 1,2,3,...,n n 个数字中选互不相邻的 m 个数的方案数
(n−m+1m)
考虑把 m−1 个数拿出来,再从剩下的里面拿 m 个数,用那 m−1 个数隔开 m 个数
- 从 1,2,3,...,n n 个数字中选可重复的 m 个数的方案数
(n+m−1n−1)
我们把 m 个元素中插入 n−1 个东西
我们从这 n+m−1 个元素中选 n−1 个元素作为隔板,第 i−1 个隔板和第 i 个隔板之间的元素个数即为第 i 个数字所选的个数
- n 个小球放进 m 个盒子里,每个盒子不同且必须有一个球
(n−1m−1)
用 m−1 个隔板插到 n 个元素的空里,两个隔板之间就是一个盒子
2. 组合恒等式
(nm)=(nn−m)(1)
组合推理:选 m 的和选 m 的补集的情况数是一样的
(nm)=(n−1m)+(n−1m−1)(2)
组合推理:考虑选不选第 n 个,不选的情况为 (n−1m),选的情况为 (n−1m−1)
k(nk)=n(n−1k−1)(3)
吸收恒等式,组合意义为从 n 个人中选 k 个人,并指定一人成为队长,由组合数定义也可推出,作为组合数其中一种推导式使用,可以与这个恒等式相搭配:(n−k)(nk)=n(n−1k),实现组合数上标下标的增减
(rm)(mk)=(rk)(r−km−k)(4)
组合推理:左式的组合意义是从 r 个中选 m 个,再从这 m 个中选 k 个,所以可以先从 r 个中选 k 个,再从剩下的 r−k 个中选剩下的 m−k 个
n∑k=0(m1k)(m2n−k)=(m1+m2n)(5)
两种证明:
- 组合意义
把 m1+m2 个东西分成个数分别为 m1 和 m2 的两份,然后从这两份中取总计 n 份的东西
- 二项式定理
(1+x)m1(1+x)m2=(1+x)m1+m2m1∑i=1xi(m1i)m2∑i=1xi(m2i)=m1+m2∑i=1xi(m1+m2i)
(m1+m2n) 就是 xn 的系数
因为 xn=xn−ixi (显然吧)
所以易得, (m1+m2n) 就等于 n∑i=0(m1i)(m2n−i)
n∑i=1(ni)2=(2nn)(6)
这是上式的特殊情况,取 m1=m2
n∑i=1i(ni)=n2n−1(7)
证明:
(1+x)n=n∑i=0(ni)xi
把此式两边求导,得到:
n(1+x)n−1=n∑i=1i(ni)xi−1
将 x=1 代入,即是原式
n(n+1)2n−2=n∑i=1i2(ni)(8)
这个式子是对上式的进一步求导,不再赘述,其实只要可以的话,可以得到 n∑i=1ip(ni) 对于任意正整数的恒等式,但求导也会越来越复杂
但是呢,据《组合数学》所言,这东西有组合意义,不会推,谁会证在评论说一下
n∑i=1i(ni)2=n(2n−1n−1)(9)
组合推理:考虑 n 个男生和 n 个女生,选取 n 个人组成团队,一个男生是领导(其实在这种意义下 (ni)2 应写作 (ni)(nn−i))
n∑i=0(−1)i(ni)=[n=0](10)
二项式定理的特殊情况,取 a=1,b=−1,仅当 n=0 时式子取值为 1,可以反演
有一个推论:n∑2∣i(ni)=n∑2∤i(ni) 移项即可推出
n∑i=0(−1)i(ni)2=⎧⎪⎨⎪⎩0n≠2m(m∈Z)(−1)m(2mm)n=2m(11)
证明:由 (1−x2)n=(1+x)n(1−x)n 可推导
(1−x2)n=(1+x)n(1−x)nn∑i=0(−1)i(ni)x2i=n∑i=0(ni)xin∑i=0(−1)i(ni)xi
对着这个式子可以推出 xn 的系数,对于左边式子来说,只有 n 为偶数时才有系数,对于 n 为奇数,系数为 (−1)m(2mm),而右边式子 xn 的系数为 n∑i=0(−1)i(nn−i)(ni)=n∑i=0(−1)i(ni)2,系数相等,由此得证
n∑i=0(ni)=2n(12)
二项式定理特殊情况,a=1,b=1
组合意义:(ni) 表示 n 个元素中含 i 个元素的子集数量,求和即为 n 个元素的子集数量 2n
n∑i=0(ik)=(n+1k+1)(13)
组合推理:在 n+1 个球里拿 k+1 个,最后一个拿的是第 i 个,则情况数为 (ik),累加即为总数——(n+1k+1)
n∑i=0(m+ii)=(n+m+1n)(14)
证明(会用到 (13) ):
n∑i=0(m+ii)=n∑i=0(m+im)=n+m∑i=m(im)+0=n+m∑i=m(im)+m−1∑i=0(im)=n+m∑i=0(im)=(n+m+1m+1)=(n+m+1n)
这个东西也可以进行扩展到上下均有值的情况
n∑i=0(m+is+i)=n∑i=0(m+im−s)=n+m∑i=0(im−s)=(n+m+1m−s+1)=(n+m+1n+s)
n∑i=0(nk)rk=(1+r)n(15)
又是二项式定理,a=m,b=1
n∑i=0(n−ii)=fn+1(fi 为斐波那契数列第 i 项)(16)
设原数列为 gi 则显然 g0=f1,g1=f2,只需要验证是否存在 gi=gi−1+gi−2 即可
然后我们把它放在杨辉三角里,结论就显而易见了:

这个表格最上面一行是 gi ,在杨辉三角中表现为对它所在斜线的数进行求和
又因为杨辉三角的递推式,观察表格,显然就能得出结论
我觉得这东西应该有一个巧妙的组合意义,但我想不出来(
3.组合数取模
-
m!(n−m)! 逆元直接淦
适合非常水的题
-
杨辉三角递推式直接取模淦
适合 nm≤1e7
-
卢卡斯定理
一个式子: (nm)≡(⌊n/p⌋⌊m/p⌋)(nmodpmmodp)(modp)
证明:
首先可以推出一个性质: (1+x)p≡1+xp(modp)
由于 (1+x)p 的第 i 项的系数为 (pi)=p!(p−i)!i! 而显然当 p≠1,p 时,这个式子永远是有 p 这个因子,故模p为0,所以只剩下了第一项和最后一项
二项式系数 (nm) 显然可以看做是 (1+x)n 中 xm 的系数,然后我们对 (1+x)n 进行一些操作:
(1+x)n≡(1+x)⌊n/p⌋⋅p(1+x)nmodp≡(1+xp)⌊n/p⌋(1+x)nmodp≡⌊n/p⌋∑i−1(⌊n/p⌋i)xipnmodp∑i=1(nmodpi)xi(modp)
然后观察式子,可以把 xm 拆成 x⌊m/p⌋⋅p⋅xmmodp ,可以发现,在模p意义下, x⌊m/p⌋⋅p 的系数为 (⌊n/p⌋⌊m/p⌋),xmmodp 的系数为 (nmodpmmodp),则 xm 的系数为 (⌊n/p⌋⌊m/p⌋)(nmodpmmodp) ,由此得证
-
扩展卢卡斯定理
Lucas 定理中对模数 p 的要求为素数,所以我们需要扩展一下下,把 p 的适用范围扩至全体正整数
根据唯一分解定理,我们有: p=qα11qα22qα33…qαkk
易得,对于任意的 i,j,qαii 与 qαjj 互质,所以可以据此建立方程组:
⎧⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎩x1≡(nm)(modqα11)x2≡(nm)(modqα22)...xk≡(nm)(modqαkk)
可以发现,求出所有的 x 后,即可通过CRT求解 (nm)
由此问题转换为求 xi=(nm)modqαii
4.中国剩余定理——孙子定理
中国剩余定理可解决以下问题(其中 n1,n2,n3,...,nk 互质):
⎧⎪
⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪
⎪⎩x≡a1(modn1)x≡a2(modn2)x≡a3(modn3)....x≡ak(modnk)
答案为:
n=k∏i=1nimi=nni
ans=k∑i=1aimim−1imodn 其中 m−1i 是模 ni 意义下的逆元
我们观察式子,可以发现 ∀i,j(i≠j)nj∣mi 所以 aimim−1i 对于其他模数余数贡献为0
而 aimim−1i≡ai(modn)i 所以我们构造出了一个满足条件的数
5.容斥原理
正常的容斥原理表现为一个式子:
∣∣
∣∣n⋃i=1Si∣∣
∣∣=n∑m=1(−1)m−1∑ai<ai+1∣∣
∣∣m⋂i=1Sai∣∣
∣∣
就是将集合里的元素缝缝补补,凑成并集,自己意会,可以用来求解与集合上计数有关问题,或者这个东西可以这么扩展:一共有 n 个集合,每个集合里有若干个属性,属性之间有重复,最终要得到只含一种属性的集合
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步