首页 > 其他分享 ><学习笔记> 二项式反演

<学习笔记> 二项式反演

时间:2023-12-08 15:46:52浏览次数:33  
标签:limits 交集 sum 反演 choose 集合 二项式

容斥原理

容斥原理的式子

\[|A1∪A2∪...∪An|=\sum_{1≤i≤n}|Ai|−\sum_{1≤i<j≤n}|Ai∩Aj|+...+(−1)^{n−1}×|A1∩A2∩...∩An| \]

一般来说不会直接用容斥原理这个式子,而是考虑一种特殊情况:交集的大小只与交集的数量有关。也就是说,我们可以用 $f[x] $来表示 \(n\) 个集合的交集的大小。

对这个式子进行整理:

\[|A1∪A2∪...∪An|=\sum_{i=1}^n (-1)^{i-1}*C^i_n*f[i] \]

二项式反演

证明

设 \(g[x]\) 表示 \(x\) 个补集的交集的大小, \(S\) 为全集, \(f[x]\) 表示 \(x\) 个原集的交集大小,那么有:

\[g[n]=|S|-\sum_{i=1}^n(-1)^{i-1}*C^i_n*f[i]=\sum_{i=0}^n(-1)^i*C^i_n*f[i] \]

同时,由于补集的补集就是原集,因此又有:

\[f[n]=\sum_{i=0}^n(-1)^i*C^i_n*g[i] \]

二项式因此得证。

形式

以下设 \(f(n)\) 表示 \(n\) 个补集的交集大小, \(g(x)\) 表示 \(n\) 个原集的大小,则公式可以写成

\[f[n]=\sum_{i=0}^n(-1)^i*C^i_n*g[i] \]

\[g[n]=\sum_{i=0}^n(-1)^i*C^i_n*f[i] \]

还有另外一种形式
\(f(n)=\sum\limits_{i=0}^n{n\choose i}g(i)\Leftrightarrow g(n)=\sum\limits_{i=0}^n(-1)^{n-i}{n\choose i}f(i)\)

最常用的形式公式如下:

\(f(n)=\sum\limits_{i=n}^m{i\choose n}g(i)\Leftrightarrow g(n)=\sum\limits_{i=n}^m(-1)^{i-n}{i\choose n}f(i)\)

证明的话,均可以将右式代入左式,具体操作,自己手算。

组合意义

记 \(f(n)\) 表示 "钦定选 \(n\) 个" \(g(n)\) 表示 "恰好选 \(n\) 个",则对于任意的 \(i≥n\) ,\(g(i)\) 在 \(f(n)\) 中被计算了 \(C_i^n\) 次,故 \(f(n)=\sum_{i=n}^{m}\) ,其中 \(m\) 是数目上界。

*钦定 \(n\) 个表示至少有这 \(n\) 个,恰好表示只有 \(n\) 个。题目中经常是通过一个求另一个,就行集合计数,通过钦定求恰好。

例题

集合计数

题目大意

一个有 \(n\) 个元素的集合有 \(2^n\) 个不同子集(包含空集),现在要在这 \(2^n\) 个集合中取出至少一个集合,使得它们的交集的元素个数为 \(k\) ,求取法的方案数模 \(10^9+7\) 。

题解

通过思考列出式子 \({C^i_n}(2^{2^{n-i}}-1)\) 。即钦定 \(i\) 个交集元素,则包含这 \(i\) 个的集合有 \(2^{n-i}\) 个;每个集合可选可不选,但不能都不选,由此可得此方案数。

接下来考虑上式与所求的关系:设 \(f(i)\) 表示钦定交集元素为某 \(i\) 个的方案数,\(g(i)\) 表示交集元素恰好为 \(i\) 个的方案数,则
\({C^k_n}(2^{2^{n-k}}-1)=f(k)=\sum\limits_{i=k}^n{i\choose k}g(i)\)

通过二项式反演求出 \(g(k)=\sum\limits_{i=k}^n(-1)^{i-k}{i\choose k}f(i)=\sum\limits_{i=k}^n(-1)^{i-k}{i\choose k}{n\choose i}(2^{2^{n-i}}-1)\)

使用一些预处理手段,时间复杂度 \(O(n)\) 。

这里对于 \(2^{2^{n-i}}\) 取模,这里可以进行预处理,定义 \(base[i]\) 数组,\(base[i]=2^{2^{n-i}}\)
,则 $base[i]=base[i-1]^2 mod $ \(p\) 即可。

标签:limits,交集,sum,反演,choose,集合,二项式
From: https://www.cnblogs.com/jinjiaqioi/p/17888273.html

相关文章

  • 反演与容斥 学习笔记
    反演与容斥学习笔记二项式反演函数\(f,g\),有以下结论:\[f_k=\sum_{i=0}^k\binom{k}{i}g_i\Longleftrightarrowg_k=\sum_{i=0}^k(-1)^{k-i}\binom{k}{i}f_i\]证明:考虑右式\[\begin{aligned}&\sum_{i=0}^k(-1)^{k-i}\binom{k}{i}f_k\\=&\sum_{i=0......
  • 莫比乌斯反演
    今日又一次学习了莫比乌斯反演,终于理解了。问题:求有多少数对\((x,y)\),\(1\lex\len\),\(1\ley\lem\),\(\gcd(x,y)=1\)。莫比乌斯函数:\(\mu(d)=\left\{\begin{matrix}1&d=1\\(-1)^k&d=\prod_{i=1}^{k}p_i(p_i\nep_j)\\0&else\end{matrix}\right.......
  • 狄利克雷卷积及常见函数与莫比乌斯反演
    QwQ文章目前没有题目,只有理论知识狄利克雷卷积狄利克雷卷积(DirichletConvolution)在解析数论中是一个非常重要的工具.使用狄利克雷卷积可以很方便地推出一些重要函数和公式,它在信息学竞赛和解析数论中至关重要.狄利克雷卷积是定义在数论函数间的二元运算.数论函数,是指定......
  • 容斥与简单反演乱写
    #defineTBDToBeDone......
  • #dp,二项式反演,容斥#CF285E Positions in Permutations
    题目问有多少个长度为\(n\)的排列\(P\)满足\(|P_i-i|=1\)的\(i\)的个数恰好为\(k\)个分析设\(dp_{i,j,k}\)表示前\(i\)个数钦定\(j\)个数满足上述条件且现在\(i\)和\(i+1\)因此被占用的方案数。那么第\(i\)个满足上述条件无非就是放入\(i-1\)或者\(......
  • 【学习笔记】莫比乌斯反演
    前言/声明首先,本人的数论水平极低,目前莫反只是刚刚入门的水平,此博客的主要作用是用于记录本人的学习过程,真的想要深入了解莫反的话这边推荐cmd大佬的博客(点这里),应该对你有更大帮助。建议学习的时候能多理解些就多去理解,少硬记些结论,这样更不容易忘记。前置知识:最基础的数论。......
  • 莫比乌斯反演 超级详细推导
    莫比乌斯反演今天是世纪性的一天,因为我又又又又来看数论且弄懂了qwq。前置知识:,(我们需要将式子化为整数分块可以解决的形式)莫比乌斯函数->函数构成当时,当,且为互异质数时,;(也就是就是分解质因数后,没有幂次大于2的质因子,此时函数值根据分解的个数决定)只要含有......
  • 斐波那契数列二项式
    在阅读CSDN时看到的。对于\(Fibonacci\)数列。存在\(Fibonacci_{2n}=Fibonacci_n\times(Fibonacci_{n-1}+Fibonacci_{n+1})\)。证明:我们知道\(Fibonacci\)有一个这个东西。\(\begin{bmatrix}f_{2n+1}&f_{2n}\\f_{2n}&f_{2n-1}\end{bmatrix}=\begin{......
  • 莫比乌斯函数及反演学习笔记
    前置知识\(1.\)艾佛森括号:\([P]=\begin{cases}1&\mathtt{(if\P\is\true)}\\0&\mathtt{(otherwise)}\end{cases}\)\(2.\)\(a\midb\)表示\(a\)是\(b\)的因子\(3.\)整除分块:\(\displaystyle\sum_{i=1}^n\lfloor\dfrac{N}{i}\rfloor\......
  • 莫比乌斯反演 学习笔记
    前置知识整除分块把之前写的博客搬过来了模型求\(\large\sum^{n}_{i=1}\lfloor{\frac{n}{i}}\rfloor\)假设\(n\)等于10,我们可以列出下表:\(\i\)12345678910\(\frac{10}{i}\)10532211111如果我们的\(n\)更大时,我们可以发现\(\fra......