二项式反演
两年前学的东西,今天补一下笔记。
Intro
考虑 个有标号的元素。
令 表示恰好 个元素满足条件(这里的条件取决于具体问题)的方案数, 表示指定 个元素满足条件的方案数。那么显然有
比如说,对于 ,可以选出 个作为指定元素,所以对 的贡献为 。
根据二项式反演,
二项式反演还有一种形式是
这里的 表示从 个元素中指定 个元素满足条件的总方案数。
从组合意义上看第一种更常用。
Application
一般来说题目要求的东西和 有关(比如问恰好有多少个元素满足条件,至少多少个元素满足条件等等)。
通常 并不容易直接求出,那么我们就可以先将 求出来,再通过二项式反演得到 。
Example
Description
考虑一个有 个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。然后需要你求出 个元素的所有排列中有多少个是错排。
Solution
这里我们可以将条件指定为元素在自己的位置上,可以发现 (因为指定 个元素在自己位置上后其他元素可以任意决策位置)。最后使用二项式反演求出 就是答案了。
Link
可以在这里尝试应用一下(题目同 Description)
https://www.luogu.com.cn/problem/P1595
AC Code:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效