组合数学
一些组合数学的证明
组合数
基础内容
定义
定义
阶乘与下降幂
即
广义二项式系数:
对称公式:
加法公式:
吸收公式:
三项式恒等式:
恒等式
上指标求和:
平行求和:
二项式定理
下降幂也满足二项式定理:
范德蒙德卷积恒等式:
上指标范德蒙德卷积恒等式:
经典子问题
插板法
Problem 1
把
可以这样理解:共有
Problem 2
对于变量
注意到 Problem 1 其实是当前问题下所有
P5520 [yLOI2019]青原樱
我们考虑,因为共有
但要注意此题和 Problem
环排列
Problem 1
在
先考虑选
多重集的排列数
有
先考虑将所有的元素都视为不同种,最后再除去重复的部分,即
特殊数列
组合数相关数列
错排
如果一个序列的每一位的值都与下标不相等,则称这个序列为错位排列。
Problem 1
求长度为
令
当
所以
卡特兰数
令
枚举第一个括号内部的括号数量
关于卡特兰数常见的公式:
同时,
P4921[MtOI2018]情侣?给我烧了!
令
考虑预处理计算
分别考虑第一排两个人的情况:
-
两个男生
则选出两个男生的方案数为
,再考虑他们伴侣的情况:当其伴侣相邻时,则剩余的
对情侣也需要全部错开,方案数为 【两个女生在同一排、其他情侣也全部错开】;如果不相邻,则假定他们是一对情侣,此时需要有 个情侣不相邻,即 。所以总方案数为
。 -
两个女生
同上,总方案数为
。 -
一男一女
因为是
个情侣错开,所以这一男一女一定不是情侣。同
,选出第一排的这两个人的方案为 【一男一女的左右位置、选出一男一女】,伴侣相邻的方案数为 ,不相邻的方案数为 ,总方案数为 。综上所述,可以得出
的递推式 。
第二类斯特林数
基础定义及求法
定义第二类斯特林数
考虑递推计算
将新元素单独放入一个子集,方案数为
将新元素放入一个现有的非空子集,方案数为
利用加法公式,可得递推式
普通幂转下降幂
证明:
考虑组合意义,等式左侧可以看成把
自然数 次幂和
给定
常见方法是使用拉格朗日插值
根据广义二项式系数
交换一下位置,可得
因为当
此时我们套用上指标求和公式
接下来,我们先让原式乘上
P6620 [省选联考 2020 A 卷] 组合数问题
给定
其中,
考虑将
接下来考虑如何计算
我们先对原式使用普通幂转下降幂的形式,将
稍作改写,可得
将
利用广义二项式系数变形
再利用三项式恒等式
不难发现它等同于
接下来利用二项式定理
最终,我们可以达到
其他组合定理
鸽巢原理
把
推广:把
CF1305C Kuroni and Impossible Calculation
给定长度为
考虑若存在一组
Prufer 序列
Prufer 序列可以将一个带标号
构造方式如下:
每次选择一个编号最小的叶子节点并删掉它,然后在序列中记录下它连接到的那个节点的编号,重复
Prufer 序列与树的相互转化
给定树,求 Prufer 序列:
用堆维护所有的叶子节点即可。
给定 Prufer 序列求树:
首先给出结论:度数为
具体构造方法如下:
-
取出 Prufer 序列中最前面的元素
。 -
取出在点集中的、且当前不在 Prufer 序列中的最小元素
。 -
在
之间连边(注意将 从点集中删除,并将其在 Prufer 序列里的出现次数减一)。 -
最后将点集中剩下的两个点连边
凯莱定理
不难证明任意一个长度为
对于每棵无根树来说,每个点都有可能成为根,所以总数为
根据 Prufer 序列的性质,我们可以知道度数为
Burnside 引理
Polya 定理
P4980【模板】Polya定理
给定一个
我们称两个环本质不同,当且仅当不能通过旋转使得它们变得完全相同。
对于一个环,我们称它任意旋转能得到的所有环构成一个轨道。轨道是环的集合,与生成这个集合的初始环无关。显然所有的环都分成了若干个轨道,而答案就是轨道的数量。
对于任意一个环,都存在一个最小的正整数
把旋转看作变换,变换可以作用于环上,把一个环变成另一个环。
那么一共有
对于任意一个轨道,轨道内每个环的稳定子大小相等,且稳定子大小乘轨道大小等于
由于一个轨道内所有环的稳定子大小之和恰好为
算了,估了,反正也不会。
容斥原理
基本容斥
当我们需要计算不满足条件
即
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 历时 8 年,我冲上开源榜前 8 了!
· 物流快递公司核心技术能力-海量大数据处理技术
· 四大AI编程工具组合测评
· 关于能否用DeepSeek做危险的事情,DeepSeek本身给出了答案
· 如何在 Github 上获得 1000 star?