• 二项式反演


    会证二项式反演啦!

    其实推式子还是很好玩的,对吧。

    先来说一下二项式反演的内容:

    设你有两个数列(f)(g),满足:

    [g_i=sum_{j=1}^i {i choose j} f_j ]

    那么一定有:

    [f_i=sum_{j=1}^i (-1)^{i-j} {i choose j} g_j ]

    其实二项式反演还有另一种形式,只不过最常用的是上面那种,在这里也写出来:

    如果有:

    [g_i=sum_{j=1}^i (-1)^j {i choose j} f_j ]

    那么:

    [f_i=sum_{j=1}^i (-1)^j {i choose j} g_j ]

    下面来证明一下第一种形式。

    把第一个式子代入第二个可以知道:

    [f_i=sum_{j=1}^i (-1)^{i-j} {i choose j} sum_{k=1}^j {j choose k} f_k ]

    整理一下,(f_k)的系数就是:

    [sum_{j=k}^i (-1)^{i-j} {i choose j} {j choose k} ]

    我们只要证明上面的式子等价于([i==k])即可,把二项式系数拆成阶乘的形式:

    [sum_{j=k}^i (-1)^{i-j} frac{i!}{j!(i-j)!}*frac{j!}{k!(j-k)!} ]

    消掉(j!),再把(i!)(k!)提出来:

    [Bigg( sum_{j=k}^i (-1)^{i-j} frac{1}{(i-j)!(j-k)!} Bigg) * frac{i!}{k!} ]

    再在前面乘以((i-k)!),后面除以((i-k)!)

    [Bigg( sum_{j-k}^i (-1)^{i-j} frac{(i-k)!}{(i-j)!(j-k)!} Bigg) * frac{i!}{k!(i-k)!} ]

    就等于:

    [Bigg( sum_{j=k}^i (-1)^{i-j} {i-k choose j-k} Bigg) * {i choose k} ]

    不难发现前面那一项就是(i-k)的二项式系数错位相减,这是等于([i-k=0])的,也就是在(i!=k)时,前一项永远为(0)。而(i==k)时,前后两项都为(1),因此得证。

    (note):有些题目的式子推出来是下标从(0)开始的,也可以用二项式反演。因为证明过程并没有用到那个(1)

    然后就可以用二项式反演来套路题目了,一般就是你要求(f),已经知道一个好求的(g)满足(g_i=sum_{j=1}^i {i choose j} f_j),然后就只要二项式反演一下就好了。

  • 相关阅读:
    职责链模式——行为型模式(1)
    创建型模式总结
    命令模式——行为型模式(2)
    桥接模式——结构型模式(2)
    享元模式——结构型模式(6)
    外观模式——结构型模式(5)
    适配器模式——结构型模式(1)
    组合模式——结构型模式(3)
    oencv学习(10)opencv mul()每个元素相乘
    oencv学习(8)背景消除
  • 原文地址:https://www.cnblogs.com/Mr-Spade/p/9638430.html
Copyright © 2020-2023  润新知