二项式反演与斯特林反演
1 二项式反演
1.1 引入
二项式反演与容斥原理有着很大的联系,在很大程度上二项式反演可以实现容斥的效果。
我们先从基础的容斥原理讲起,首先二元的容斥形式非常简单,如下:
更一般的,我们有:
这就是容斥原理。
证明:设某一个元素被
所以每个元素对等式左右两边的贡献相等。
1.2 基本形式
1.2.1 形式零
首先我们可以直接从容斥原理推出二项式反演的形式零。记
可以得到:
考虑一种特殊的情况,即集合的交集大小只和集合的数量有关,那么我们可以令:
。 。
根据上面两个式子不难得到:
显然两者等价且可以互相推导,于是我们可以得出二项式反演的形式零:
1.2.2 形式一
上面的的形式零并不常见,更常用的形式需要我们做一些变形。
设两个函数
移项可得:
我们给等式右边除以
1.2.3 形式二
形式一中的和式是对
证明:直接将右式代入左式可得:
于是原式成立。
1.3 例题
例 1 [BZOJ4665] 小 w 的喜糖
首先我们先认为相同的糖是不同的,这样算出答案之后乘上
接下来考虑二项式反演,令
于是只需求出
而
通过此例不难发现,“至少” 转 “恰好” 是二项式反演的一个重要运用场合。
2 斯特林反演
前置知识:斯特林数相关。
2.1 基本形式及证明
斯特林反演的基本形式与二项式反演类似,如下:
为了证明这个定理,我们需要先证明一个引理,称为反转公式:
我们将
为了使左右两边相等,我们需要满足
对于下面的式子,我们将
同上,只有当
接下来我们证明反演公式,先证
接下来证明
于是斯特林反演的公式得证。
同理,斯特林反演还有另一种形式:
这与二项式反演的形式二也是相似的。
2.2 例题
例 1 [BZOJ4671] 异或图
令
意思是将
于是我们求出
显然这是线性基可以求解的问题,将所有数插入线性基,设成功了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律