zoukankan      html  css  js  c++  java
  • 生成函数trick

    生成函数trick

    因为是很小的trick,所以标题字号也非常小(雾)

    本文记录一些常用的推式子的东西,持续更新

    牛顿二项式定理

    [{(1+x)^m}=sum_{igeq 0} {mchoose i}x^i ]

    注意m是实数。而当m为负数,前面是((1-x)=(1+(-x)))时有个非常好的性质:

    [egin{aligned} (1-x)^{-n} &=sum_{i geq 0}left(egin{array}{c} -n \ i end{array} ight)(-x)^{i} \ &=sum_{igeq 0}frac{-n^{underline{i}}}{i!} (-1)^i x^i\ &=sum_{igeq 0}frac{n^{overline{i}}}{i!}x^i \&=sum_{igeq 0}frac{(n+i-1)^{underline{i}}}{i!}x^i \&=sum_{i geq 0}left(egin{array}{c} n-1+i \ i end{array} ight) x^{i} end{aligned} ]

    组合数恒等式:顶变

    有个用了好多次的恒等式,而且大眼看不容易看出来:

    [sum_{i=0}^n {ichoose m}={n+1choose m+1} ]

    可以理解为枚举最后一个选的位置,还剩下(m)个要选,一共(m+1)

    各种变形:

    [sum_{i=0}^n {m+i-1choose i}={m+nchoose m}={m+nchoose n} ]

    证明(也不算证明,都是一个式子:

    [sum_{i=0}^n {m+i-1choose i}= sum_{i=0}^n {m+i-1choose m-1} =sum_{i=0}^{m-1+n} {i-1choose m-1}={m+nchoose m} ]

    斯特林数拆下降幂

    为了凑数写上了... 反正也挺常用的

    一看到(m^k),就要想到

    [m^{k}=sum_{i=0}^{k}left{egin{array}{l} k \ i end{array} ight} i!{mchoose i}=sum_{i=0}^{k}left{egin{array}{l} k \ i end{array} ight} m^{underline{i}} ]

    可以用组合意义证明,具体看第二类斯特林数的学习笔记。

    而这个东西可以做很多事情,大部分是直接带入题目要求的式子(比如求自然数幂和),也有用组合意义,枚举i,转化成计算有多少个集合包含选的方案。

    小等式

    [{nchoose k}{kchoose i}={nchoose i}{n-ichoose k-i} ]

    变形:

    [{nchoose i}{nchoose k}={nchoose i+k}{i+kchoose i} ]

    很多时候就是这些小式子导致推不出来...

  • 相关阅读:
    【1】
    正则表达式 re模块
    模块—— 序列化模块、random模块、os模块 、 sys模块、hashlib模块、collections模块
    编码转换 文件的操作
    函数进阶3 —— 生成器、yield from
    函数的进阶2
    函数进阶 —— 动态参数、内置空间、函数嵌套
    初识函数 函数参数 三元运算
    Sringboot jdbc 操作数据库
    python使用subprocess执行linux命令
  • 原文地址:https://www.cnblogs.com/lcyfrog/p/13915506.html
Copyright © 2011-2022 走看看