• 斯特林数


    第二类斯特林数

    比起第一类斯特林数,第二类斯特林数更为常用。

    (egin{Bmatrix}n\mend{Bmatrix}) 表示将 (n) 个带标号球放入 (m) 个无标号盒子(非空)的方案数。

    有递推式:(考虑第 (n) 个球放到哪里)

    [egin{Bmatrix}n\mend{Bmatrix} = egin{Bmatrix}n-1\m-1end{Bmatrix} + megin{Bmatrix}n-1\mend{Bmatrix} ]

    通过这个递推式,我们可以用 (O(n^2)) 的时间计算出所有第二类斯特林数。

    通过考虑无标号球无标号盒子与第二类斯特林数的关系可以得到下面的式子:

    [m^n = sum_{k}{mchoose k} egin{Bmatrix}n\kend{Bmatrix} k! ]

    即:

    [m^n = sum_{k}egin{Bmatrix}n\kend{Bmatrix}m^{underline{k} } ]

    可以用于普通幂转下降幂。

    发现有些像二项式反演,于是可以上反演:

    [m^n = sum_{k}{mchoose k} egin{Bmatrix}n\kend{Bmatrix} k!\ egin{Bmatrix}n\mend{Bmatrix}m! = sum_{k}(-1)^{m-k} {m choose k} k^n\ egin{Bmatrix}n\mend{Bmatrix} = sum_{k}frac{k^n}{k!} frac{(-1)^{m-k}}{(m-k)!} ]

    发现是个卷积形式,于是可以 (O(n log n)) 求出一行的斯特林数。

    如果想要求一列的话需要用到生成函数。

    [egin{aligned} F_k(x)&=sum_{i} egin{Bmatrix}i\kend{Bmatrix}x^i\ &= sum_i egin{Bmatrix}i-1\k-1end{Bmatrix}x^i + ksum_i egin{Bmatrix}i-1\kend{Bmatrix}x^i\ &= xsum_i egin{Bmatrix}i\k-1end{Bmatrix}x^i + xksum_i egin{Bmatrix}i\kend{Bmatrix}x^i\ &= xF_{k-1}(x) + xkF_k(x) end{aligned} ]

    于是:

    [egin{aligned} F_k(x) &= frac{x}{1-kx}F_{k-1}(x)\ &= frac{x}{1-kx} imes frac{x}{1-(k-1)x} imes ... imes frac{x}{1-x}\ &= frac{x^k}{prod_{i=1}^k (1-ix)} end{aligned} ]

    (由于边界为 (F_0(x) = 1)

    分子就是将多项式向右平移 (k)。分母可以用分治+NTT+求逆做到 (O(n log^2 n))

    第一类斯特林数

    (egin{bmatrix}n\mend{bmatrix}) 表示 (n) 个有标号元素形成 (m) 个圆排列(环)的方案数。

    有递推式:(考虑最后一个球跟在谁后面)

    [egin{bmatrix}n\mend{bmatrix} = egin{bmatrix}n-1\m-1end{bmatrix} + (n-1)egin{bmatrix}n-1\mend{bmatrix} ]

    它和第一类斯特林数有个类似的式子:

    [x^{overline{m}} = sum_{k}egin{bmatrix}m\kend{bmatrix} x^k ]

    是不是有些像生成函数?于是可以用分治+NTT来 (O(n log^2 n)) 求一行第二类斯特林数。

    斯特林反演

    有一个这样的式子:

    [f(m) = sum_{k}egin{Bmatrix}m\kend{Bmatrix} g(k)\ Leftrightarrow g(m) = sum_{k}egin{bmatrix}m\kend{bmatrix}f(k)(-1)^{m-k} ]

    证明需要用到反转公式

    于是有了普通幂转阶乘幂的又两个式子:

    [x^m = sum_{k}(-1)^{m-k} egin{Bmatrix}m\kend{Bmatrix} x^{overline{k}}\ x^{underline{m}} = sum_k (-1)^{m-k} egin{bmatrix}m\kend{bmatrix} x^k ]

  • 相关阅读:
    spring security 获取当前用户
    spring data jpa deleteInBatch 导致异常 java.lang.StackOverflowError
    大数据 分布式文件系统 HDFS概念
    angular9 ng start正常,build部署后无法正常加载页面
    springboot使用rocketmq RocketMQMessageListener参数
    spring boot使用rocketmq
    Teamcenter RAC 调用查询
    Teamcenter RAC 查找数据集并获取数据集中文件
    带有编译时和运行时的简记
    前台线程和后台线程、线程安全
  • 原文地址:https://www.cnblogs.com/JiaZP/p/14162592.html
Copyright © 2020-2023  润新知