zoukankan      html  css  js  c++  java
  • 二项式反演基础

    二项式反演

    (g_n=sumlimits_{i=0}^n(-1)^idisplaystyleinom{n}{i}f_iquad↔quad f_n=sumlimits_{i=0}^n(-1)^idisplaystyleinom{n}{i}g_i)

    证明:

    [egin{align} &sumlimits_{i=0}^n(-1)^iinom{n}{i}g_i\ =&sum_{i=0}^n(-1)^iinom{n}{i}sum_{j=0}^i(-1)^jinom{i}{j}f_j\ =&sum_{i=0}^nsum_{j=0}^i(-1)^{i}(-1)^jfrac{n!}{i!(n-i)!}·frac{i!}{j!(i-j!)}f_j\ =&sum_{i=0}^nsum_{j=0}^i(-1)^{i}(-1)^jfrac{n!}{(n-i)!j!(i-j!)}f_j\ =&sum_{i=0}^nsum_{j=0}^i(-1)^{i}(-1)^jfrac{n!(n-j)!}{(n-j)!(n-i)!j!(i-j!)}f_j\ =&sum_{i=0}^nsum_{j=0}^i(-1)^{i}(-1)^jfrac{n!}{(n-j)!j!}·frac{(n-j)!}{(n-i)!(i-j!)}f_j\ =&sum_{i=0}^nsum_{j=0}^i(-1)^{i}(-1)^jinom{n}{j}·inom{n-j}{i-j}f_j\ =&sum_{j=0}^n(-1)^jinom{n}{j}f_jsum_{i=j}^n(-1)^iinom{n-j}{i-j}\ &i←i-j\ =&sum_{j=0}^n(-1)^jinom{n}{j}f_jsum_{i=0}^{n-j}(-1)^{i+j}inom{n-j}{i}\ =&sum_{j=0}^nf_jinom{n}{j}sum_{i=0}^{n-j}(-1)^{i}inom{n-j}{i}\ =&sum_{j=0}^nf_jinom{n}{j}[n==j]\ =&f_n end{align} ]

    倒数第二步可以把后面那一坨变为 ((1-1)^{n-j}) 显然等价于 ([n==j])

    于是就有

    [f_n=sum_{i=0}^ninom{n}{i}g_iquad↔quad g_n=sum_{i=0}^n(-1)^{n-i}inom{n}{i}f_i ]

    可以令 (G_n=(-1)^ng_n) 再带入最上面的式子,就有了一样的形式了。


    应用

    假设要求计数 恰好 (k) 个某物的方案数,(1leq kleq n)

    1.我们令 (g_i) 表示 恰好 (i) 个某物的方案数,(f_i)至多 (i) 个某物的方案数。

    这个满足 (f_k=sumlimits_{i=0}^kdisplaystyleinom{k}{i}g_i) ,假设我们能求出 (f_{0,1,2,..k}) ,就可以用二项式反演求回 $ g_k=sum_{i=0}k(-1){k-i}displaystyleinom{k}{i}f_i $了。

    2.我们令 (g_i) 表示 恰好 (i) 个某物的方案数,(f_i)至少 (i) 个某物的方案数。

    这个满足 (f_k=sumlimits_{i=k}^ndisplaystyleinom{i}{k}g_iquad ↔quad g_k=sumlimits_{i=k}^n(-1)^{i-k}displaystyleinom{i}{k}f_i)

    不会证,所以暴力拆开。

    [egin{align} &sum_{i=k}^ninom{i}{k}g_i\ =&sum_{i=k}^ninom{i}{k}sum_{j=i}^n(-1)^{j-i}inom{j}{i}f_j\ =&sum_{i=k}^nsum_{j=i}^ninom{j}{i}inom{i}{k}(-1)^{j-i}f_j\ =&sum_{i=k}^nsum_{j=i}^ninom{j}{k}inom{j-k}{i-k}(-1)^{j-i}f_j\ =&sum_{j=k}^nf_jsum_{i=k}^j(-1)^{j-i}inom{j}{k}inom{j-k}{i-k}\ &i←i-k\ =&sum_{j=k}^nf_jinom{j}{k}sum_{i=0}^{j-k}(-1)^{j-k-i}inom{j-k}{i}\ =&sum_{j=k}^nf_jinom{j}{k}[j==k]\ =&f_k end{align} ]

    于是也可以先求出 (f_{0,1,2...k}) 再二项式反演回 (g_k) 了。

    这个貌似就是广义容斥,把求恰好的问题转化为求至多,至少的问题。

    例题

    [post cid="969" cover="http://"/]

    个人博客地址: www.moyujiang.com 或 moyujiang.top
  • 相关阅读:
    ↗☻【高性能网站建设进阶指南 #BOOK#】第3章 拆分初始化负载
    ↗☻【高性能网站建设进阶指南 #BOOK#】第7章 编写高效的JavaScript
    【JavaScript】text
    ↗☻【高性能网站建设进阶指南 #BOOK#】第5章 整合异步脚本
    ↗☻【高性能网站建设进阶指南 #BOOK#】第10章 图像优化
    利用十大最佳游戏开发工具开发游戏
    传奇服务器端/客户端 完整源代码
    order by union 应用实例 mssql
    Nine Digits Expression
    Ninedigit Fractions
  • 原文地址:https://www.cnblogs.com/moyujiang/p/14906379.html
Copyright © 2011-2022 走看看