基础定义、式子之类的
排列: 表示在 个人中选 个人,顺序对答案有影响(即 和 算作不同)。,意义就是第一个可以有 种选择,第二个有 种选择,一直到第 个有 个选择。撑起来就是上面那个式子。特殊的有 。
组合: 或者 表示在 个人中选 个人,顺序对答案无影响(即 和 算作相同)。组合的计算方法有很多,比较常见的是递推和算阶乘。
递推式是 ,就是说多加的那个人可能是新加的那个人,也可能是原来的序列中再挑了一个人。
阶乘算法是 。发现就是相对于 多乘上一个 。也就是说对于选择的 个人相同的情况在排列中会算 中算了 次,但是在组合中只会被算 次,所以乘上一个 就好了。有 。
吸收公式:,把组合数代进去很容易看出来。
吸收指标:。把阶乘代进左边得到 ,分子分母同时乘 然后就得到右边。
上指标求和:。理解为在 个数中选 个数的子集个数。枚举最后一个数选择第 个,。
平行求和:。这个不会证。
和斐波那契数列有关的:,其中 为斐波那契数列的第 项。不会证。
不知名式子:。
证明:
- 考虑组合推理形式。如果在 个人中枚举选 个人,给两个人打上标记(可以是同一个),方案数是 。
- 考虑根据被标记的人重新计算。如果标记同一个人,方案数为 。
- 如果标记两个人,方案数为 。加上之后得到 。
范德蒙徳卷积:。考虑组合意义证明。在大小为 的集合中选择出 个数,相当于把集合拆成 和 两个部分,在 中选 个,然后在 中选剩下的 个。
二项式定理:
定理本身是这个:。
证明:
- 对于 显然成立。考虑使用归纳法。假设对于 成立,令现在 。
- ,代入得 。
- 乘进去得到 。为了合并让指数相同,令 ,为了避免出现负数提出 项。
- 。发现很像了,把 提出来。
- 。根据递推式可以把后面的那一坨换成 。。
- 把两个零散的代回去就会得到二项式定理的式子。
根据二项式定理可以得到很多有用的东西。
二项式定理中取 可以得到 ,取 可以得到 。
。
证明:
模质数 意义下的的类似二项式定理的东西:。
证明:
- 把组合数拆开,。发现分子是 ,如果不被约掉的话就会使这一项变成 。
- 因为 是质数,所以只有在 或者 时分母会出现 。所以只需要考虑 和 时取值。就会得到 。
二项式反演:若已知 ,则显然有 。若已知 需要求 ,则 。这个就是二项式反演。不是很懂,遇见表达有问题会回来改。
证明:
- 将 展开,得到反演式为 。
- 改变一下枚举顺序:。吸收指标得 。
- 令 ,反演式进一步表达为 。在二项式定理中取 就会得到形如后面这一坨的式子,根据上面的内容我们证明了这个式子的值是 ,本处为 即 。
- 所以反演式简化为 。只有在 取 的时候才有取值,所以成立。
同时有一种转化,若 ,则 ,这个的证明是相似的。
插板法
常用的组合数学技巧。诸如此类其实有一个叫小球盒子问题,这篇日报有很详细的讲法。
经典问题:给定 个相同的球,分成相同的 组,每组不能空,方案数为 。
考虑分组即为在一些球的空隙间插板子,用 个板子隔开出 组。一共有 个空位,所以答案就是 。
经典问题:给定 个相同的球,分成相同的 组,每组可以空,方案数为 。
考虑现在多了 个球,然后题目条件变为每组不能空,方案数为 。可以认为我们对每组都加一个球,然后把这些球都拿走,发现是一一对应的,所以和上一个问题的解法相同。
经典问题:给定 个相同的球,分成不同 组,第 组至少要有 个球,方案数为 。
显然,类比上面的,考虑把每个组的 个球减去,问题变成给 个球分成相同 组每组可以空的方案数,按第二个算就好。
不相邻的排列:在 到 选 个数,这 个数互不相邻的组合有 种。可以假设选一个用了两个数,当前选择的数并且这个数后面那个不能选,那么就等于在 个数(选择 不需要占用两个)中随便选 个数的方案数。
第二类斯特林数(斯特林子集数)
记作 或 。表示将 个不同的球分进相同的 个盒子,盒子不允许空的方案数。递推式是 。边界是 。证明显然,考虑增加一个新球时有两种可能,新开一个,是 ;或者放进原来一个盒子,是 ,每个盒子都有可能,再乘上 。
通项公式:。
证明:
- 使用容斥原理。设将 个不同的球分到 个不同的盒子,盒子能空的方案数记为 , 个不同的球分到 个不同的盒子,盒子不能空的方案数记为 。显然对于 和 ,有 。发现这个东西就是一个二项式反演。
- 。
- 考虑 和 的关系,发现问题里不同的在于第二类斯特林数的盒子是相同的,所以就是一个类似排列和组合的区别,乘以 就好。
- 即 。代进去就是上面那个通项公式。
所以根据这个推出来的还有一个重要公式是 。
卡特兰数
没有一个确定的定义,记作 ,这一板块会简记为 ,这里给一个在数据规模为 的情况下答案是 的问题作为其定义。
记住 ,很多时候边界需要自己处理。
问有多少长度为 的合法括号序列。答案是卡特兰数 。请在一张草稿纸上画一个平面直角坐标系,这里只需要用到第一象限。
问题能够转化为给定一个平面直角坐标系左括号是往上走,右括号是往右走,问从原点走到 且不碰到 的路径数。
没有限制很好做,答案是 ,即在 步中选择 个往上。考虑限制的条件。我们考虑对于一个经过了 的路径,以 为轴翻转。此时这条路径终点变为 ,每条不合法的路径翻转后都是一条到 的路径,而每条到 的路径翻转后都是一条不合法路径,也就是说不合法路径和经过 的路径是一一对应的。所以答案减去 即可。我们得到卡特兰数的公式 。
卡特兰数还有其他常用的公式:
公式化简:。可以把开始推的式子写出来。。硬提出来 得到 。然后显然硬把后面那个通分得到 。化简得到 。
递推形式: 以及 。不证。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析