组合数学
组合数学
组合数定义式
下降幂
上升幂
相关结论
,用于处理上升幂 ,用于处理 情况 ,用于上升下降幂的转换
特殊情况
- 当
或 时, - 当
或 时,
各种定理
1. 递推式(春游)
初值:
2. 翻转
3. 吸收公式(用于处理常数或参数)
,用组合数定义展开证明 ,用“春游”证明. ,用很多次吸收公式的推论。
4. 上指标反转
5. 二项式定理
- 当
且 时, (泰勒展开可证明) - 常用:
是 的 项系数。这可以用来证明其他定理。(如lucas)
6. 一行之和定理
,是二项式定理中 的情况- 可用于有类似下指标求和的式子:
7. 平行求和
8. 上指标求和
9.
10. 卷积
,从 个元素中选 个,等于从 中选 个,从 中选 个,- 该式用于处理大部分的
- 变型:
11.
- 用定义展开证明
- 组合意义:从
中选 个,再从这 个中选 个,等价于先选 个要用的,再从 个中选 个陪衬的。
多项式系数
个不同的物品分成 组,第 组有 个,总方案数: ( ),可写作:
[注:上文是用AI把笔记的照片转文字的来的,可能会有错]
取模意义下的组合数
一些引理
-
,证明:
,因为分子只有一个p,分母只有在n=p或n=0时有p。 -
Lucas定理
一般来说,我们预处理阶乘,然后用定义式来计算组合数,但是当遇到n和m很大的时候,不支持
对于质数
证明:
拓展Lucas
用于处理模数M不是质数的情况。
设
我们可以求出每一个
我们吧n!,m!和
会有形如
现在分母可以exgcd求逆了,我们只需要求形如下面这样的式子:
前面两个是n中p的倍数,第三个是n对p的循环节,最后一个是n对p的余数。
因为要求的是n!扣掉p的因子对
感觉这玩意非常难写,而且好像用处不大。
经典题型
一,插板法:
type1: 有n个元素,m个板子。现在要求每两个板子之间至少有一个球,求方案数。
n个球有n-1个空位(认为头尾不放板)。于是答案是
type2:板之间可以不放球。
对于每一种方案,在相邻两个板之间再放一个球。这个与n+m个球的type1等价。
所以答案是
练习题:从 1, 2, · · · , n 中选出 k 个数,要求任何两个数都不相邻,一共有多少种选法?
分成k+1段,设每一段长度为
则
所以相当于在n-k+2个数插k个板
所以答案是
二,把组合数用二项式的 项系数理解
给定
直接循环卷积快速幂,时间复杂度
三,下指标求和的处理方法
我们发现下指标求和没有公式,所以我们要想办法转换下指标求和。
来看一个例题:
题面
给定
解法:
先把
再用
注意到
然后发现左右两边都可以递归求解。于是做完了。复杂度为
四,用组合意义
例题(某联考题):
n 是1e9, m 是1e6,p是1e9+7
有一种用斯特林数把上升幂转普通幂转下降幂,然后用斯特林数奇妙公式乱搞的做法,但是用组合意义做会有奇效。
简单转换一下式子:(把上升幂转组合数形式)
先不看 m! , 我们可以认为是 :从 n 个球中选 i 个球,再往 i 个球中加 m - 1 个球,最后从i - 1 + m 个球选m个球。因为我们
所以答案是:
总结一下
当
当
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具