• 二项式反演


    反演

    [f_n=sumlimits_{i=0}^{n}(-1)^idbinom{n}{i}g_i iff g_n=sumlimits_{i=0}^{n}(-1)^idbinom{n}{i}f_i ]

    常用形式一:

    [f_n=sumlimits_{i=0}^{n}dbinom{n}{i}g_i iff g_n=sumlimits_{i=0}^{n}(-1)^{n-i}dbinom{n}{i}f_i ]

    常用形式二:

    [f_n=sumlimits_{i=n}^{m}dbinom{i}{n}g_i iff g_n=sumlimits_{i=n}^{m}(-1)^{i-n}dbinom{i}{n}f_i ]

    证明

    把第一个形式中的右侧(g_n)代入左侧的式子

    [f_n=sumlimits_{i=0}^{n}(-1)^idbinom{n}{i}sumlimits_{j=0}^{i}(-1)^jdbinom{i}{j}f_j ]

    [=sumlimits_{j=0}^{n}f_jsumlimits_{i=j}^{n}(-1)^{i+j}dbinom{n}{i}dbinom{i}{j} ]

    [=sumlimits_{j=0}^{n}f_jsumlimits_{i=j}^{n}(-1)^{i+j}dbinom{n}{j}dbinom{n-j}{n-i} ]

    组合数的变化可以理解为原本是从(n)个中选(i)个,再从(i)个中选(j)个 变为 先从(n)个中选(j)个,再从剩下的里面选(n-i)

    [=sumlimits_{j=0}^{n}f_jdbinom{n}{j}(-1)^jsumlimits_{i=j}^{n}(-1)^idbinom{n-j}{n-i} ]

    [=sumlimits_{j=0}^{n}f_jdbinom{n}{j}(-1)^jsumlimits_{i=0}^{n-j}(-1)^{n-i}dbinom{n-j}{i} ]

    可以发现后面是二项式定理的形式

    [=sumlimits_{j=0}^{n}f_jdbinom{n}{j}(-1)^j(1-1)^{n-j} ]

    [=f_n ]

    两个常用形式证明大同小异

    例题

    已经没有什么好害怕的了

    题目大意:(a_i)(b_i)一一配对,使得(a_i>b_i)的数量恰好为(frac{n+k}{2})的方案数

    (pos_i=sumlimits_{i=1}^{n}[a_i>b_i])

    (f[i][j])为前(i)(a),选了(j)(a>b)的方案数

    得到(dp)方程:(f[i][j]=f[i-1][j]+(pos[i]-j+1)*f[i-1][j-1])

    (g_i=f[n][i]*(n-i)!)(f_i)为恰好有(i)(a>b)的方案数

    根据我个人理解,(g_i)并不是至少有(i)(a>b)的方案数,而是选出(i)(a>b)的方案之后,其他数据随意排列的方案数,显然第二种解释的方案数应该多于第一种,因为会有大量重复情况

    那么有

    [g_k=sumlimits_{i=k}^{n}dbinom{i}{k}f_i ]

    根据二项式反演得到

    [f_k=sumlimits_{i=k}^{n}(-1)^{i-k}dbinom{i}{k}g_i ]

  • 相关阅读:
    KEIL5.25生成.bin文件步骤
    【转】树莓派网线直连笔记本电脑
    由编译器指定数组长度带来的一个问题
    【转】C/C++位域结构深入解析
    【转】大小端存储模式精解
    【转】树莓派入门之装系统
    【转】树莓派Raspberry Pi
    stm32的双向io口
    小记之while循环条件的操作位置
    【转】浮点数在计算机中存储方式
  • 原文地址:https://www.cnblogs.com/knife-rose/p/13042516.html
Copyright © 2020-2023  润新知