zoukankan      html  css  js  c++  java
  • 组合套路

    一个很水但是很有用的结论:

    \(C_m^n=C_m^{n-m}\)

    当柿子不好联想组合意义时可以试一下转换

    一个水结论但用处挺多:

    \(kC_n^k=nC_{n-1}^{k-1}\)

    上面两个证明直接下降幂定义展开下就结了

    范德蒙德卷积(考虑组合意义易得)

    \(\sum_{i=0}^k C_n^i C_m^{k-i} = C_{m+n}^k\)

    两个小推论:

    \(\sum_{k=1}^n k(C_n^k)^2=nC_{2n-1}^{n-1}\)

    \(\sum_{i=0}^{n}(C_n^i)^2=C_{2n}^{n-1}\)

    都用一下第一个柿子,剩下比较显然。

    a very nice blog:

    nice blog

    组合数拆开与下降幂组合,再提出项并回去变成形式好的组合数。
    具体题目:如何优雅的求和,组合数问题

    两个求对点值求下降幂的方式:

    \(f(x)=\sum a_ix^i,f(x)=b_ix^{\underline{i}}\)

    1.用k阶差分的第一项。

    \(\frac{b_i}{i!}=c_i\)

    \(f(x)=\sum c_i \frac{x^{\underline{i}}}{i!}=\sum c_i C^x_i\)

    差分可得:

    \(\Delta f(x)=f(x+1)-f(x)=\sum c_i C^x_{i-1}\)

    可以看出,当组合数等于1的时候,也就是k阶差分的第一项,就是答案。

    对于k阶差分有个式子:

    \(\Delta^kf(0)=\sum_{i=0}^k (-1)^{k-i} C^k_i a_i\)

    这个东西咋处理呢?拆开组合数,变成最经典的卷积式。

    \(A(x)=\frac{(-1)^i}{i!}\) \(B(x)=\frac{a_i}{i!}\)

    两个一卷就是\(c\)

    2.利用\(e^x\), 指数型生成函数

    设出点值的指数型生成函数:

    \(\sum \frac{f(i)}{i!}x^i=\sum \frac{x^i}{i!} \sum f_jx^{\underline{j}}\)

    \(=\sum f_i \sum \frac{x^j}{(j-i)}=\sum f_i x^i \sum \frac{x^j}{j!}\)

    后面的柿子变成了\(e^x\),卷积即可。

  • 相关阅读:
    centos7下安装jdk
    在centos7关于防火墙的基本操作
    hadoop的特性
    java中怎么使用combobox,并获取其选中的值
    @suppressWarnings("unchecked")在java中的作用
    The processing instruction target matching "[xX][mM][lL]" is not allowed.
    Invalid byte 2 of 2-byte UTF-8 sequence解决方案
    Nmap
    XSS-笔记
    sql盲注-笔记
  • 原文地址:https://www.cnblogs.com/Atoner/p/13066423.html
Copyright © 2011-2022 走看看