zoukankan      html  css  js  c++  java
  • 斯特林数

    给个定义吧:第一类斯特林数 (nrack k) 表示将 (n) 个元素分成 (k) 个环的方案数,第二类斯特林数 (nrace k) 表示将 (n) 个元素分成 (k) 个集合的方案数,分别有以下两个递推式

    [{nrack k}={n-1rack k-1}+(n-1){n-1rack k}, {nrace k}={n-1race k-1}+k{n-1race k} ]

    然后第二类斯特林数和组合数有如下的关系:

    [{nrace k}=frac 1{k!}sum_{j}(-1)^jinom kj(k-j)^n ]

    以及重要恒等式:

    [x^{underline{n}}=sum_{k}{nrack k}x^k ]

    相当于是说,第一类斯特林数 (nrack k) 的生成函数就是 (x^{underline{n}})

    以及斯特林反演:

    [f_n=sum_{k}{nrack k}g_kLeftrightarrow g_n=sum_{k}(-1)^{n-k}{nrace k}f_k ]

    和等价形式:

    [f_n=sum_{k}(-1)^k{nrack k}g_kLeftrightarrow g_n=sum_{k}(-1)^{k}{nrace k}f_k ]

    那么根据斯特林反演和重要恒等式,我们可以导出四个上升幂、下降幂、普通幂之间的互推柿子,比较常用的是下面这个:

    [x^n=sum_k(-1)^{n-k}{nrace k}x^{underline{k}} ]

    斯特林数和差分也有着奇妙关系,主要是这个:

    [Delta^mx^n|_{x=0}=m!{nrace m} ]

    其他就没什么了,还有就是分治 FFT 可以快速预处理斯特林数。

  • 相关阅读:
    淘宝技术架构演进之路
    单点登录
    [c++11] ——条件变量(Condition Variable)
    std::lock_guard unique_lock
    C++中push_back和emplace_back的区别
    C++11 CAS无锁函数compare_exchange_weak的使用
    C++11新特性之 rvalue Reference(右值引用)
    C++ auto和decltype的区别
    ovs contrack
    周总结03
  • 原文地址:https://www.cnblogs.com/whx1003/p/13749173.html
Copyright © 2011-2022 走看看