zoukankan      html  css  js  c++  java
  • 关于二维二项式反演的正确性

    前言

    我第一次看到这个idea是神 (Fuyuki) 去年6月份的时候出了一套题目,里面用到了这个东西,不过他当时没有给出证明。后来看到了 (boshi)(Mina) 上发的计数合集,里面证明了这玩意儿的正确性,我个人认为还是一个非常妙的东西,所以专门开个坑记录一下。

    柿子

    [ ext{if} quad f_{n,m}=sum_{i=0}^{n} sum_{j=0}^{m}(inom{n}{i} inom{m}{j}g_{i,j}) \ ext{then} quad g_{n,m}=sum_{i=0}^{n} sum_{j=0}^{m}((-1)^{(n+m-i-j)}inom{n}{i} inom{m}{j}f_{i,j}) \ ]

    proof

    (step 1:) 变成能二项式反演的形式
    (F_{i}=f_{i,m}) ,(G_{i}=sum_{j=0}^{m} inom{m}{j} g_{i,j})
    原式变为 (F_n=sum_{i=0}^{n}inom{n}{i}G_i)
    直接反演一波 (G_n=sum_{i=0}^{n}(-1)^{n-i}inom{n}{i}F_i)
    再展开回去 (sum_{j=0}^{m} inom{m}{j} g_{n,j}=sum_{i=0}^{n}(-1)^{n-i}inom{n}{i}f_{i,m})
    注意,第一步是把 (m) 视为了一个常量。

    (step 2:) 再二项式反演一遍
    (F_{i}=sum_{j=0}^{n}(-1)^{n-j}inom{n}{j}f_{j,i}) , (G_{i}= g_{n,i})
    原式变为 (F_m=sum_{i=0}^{m}inom{m}{i}G_i)
    直接反演一波 (G_m=sum_{i=0}^{m}(-1)^{m-i}inom{m}{i}F_i)
    再展开回去 (g_{n,m}=sum_{i=0}^{m}(-1)^{m-i}inom{m}{i}sum_{j=0}^{n}(-1)^{n-j}inom{n}{j}f_{j,i})
    (i,j) 互换(就是换个名字,看起来比较亲切)(g_{n,m}=sum_{i=0}^{n}(-1)^{n-i}inom{n}{i}sum_{j=0}^{m}(-1)^{m-j}inom{m}{j}f_{i,j})
    整理一下,求和符号提前,就是开头的柿子力!

  • 相关阅读:
    js练习-两个栈实现队列
    js练习- 给你一个对象,求有几层
    React Context上下文
    react-native StatusBar透明
    react-native-splash-screen 隐藏statusbar
    掘金转载-手写一个Promise
    multipart/form-data
    (转)浅谈测试驱动开发(TDD)
    Objective-C urlEncode urlDecode
    (转)在Xcode 7上直接使用Clang Address Sanitizer
  • 原文地址:https://www.cnblogs.com/thedreammaker/p/14791149.html
Copyright © 2011-2022 走看看