zoukankan      html  css  js  c++  java
  • 斯特林反演

    首先是斯特林反演的公式:

    [f(i)=sum_{j=0}^iegin{Bmatrix}i\jend{Bmatrix}g(j) Longleftrightarrow g(i)=sum_{j=0}^i(-1)^{i-j}egin{bmatrix}i\jend{bmatrix}f(j) ]

    [f(i)=sum_{j=i}^Negin{Bmatrix}j\iend{Bmatrix}g(j) Longleftrightarrow g(i)=sum_{j=i}^N(-1)^{j-i}egin{bmatrix}j\iend{bmatrix}f(j) ]

    然后考虑这玩意的意义:
    (n) 个有标号的物品,设:在某种条件下把它们弄成允许相同的方案数为 (G(n)),全部不同的方案数为 (F(n))
    那么枚举这 (n) 个物品的集合划分方案,让每个集合里的物品相同,不同集合的物品不同,那么易得$$G(n)=sum_{i=0}^negin{Bmatrix}niend{Bmatrix}F(i)$$
    运用斯特林反演$$F(n)=sum_{i=0}n(-1){n-i}egin{bmatrix}niend{bmatrix}G(i)$$
    一般来说 (G(n)) 相对好求一些,那么我们就可以这么算 (F(n)) 了。

    例题

    [雅礼集训——方阵]
    给出一个 (n imes m) 大小的矩形,每个位置可以填上 ([1,c]) 中的任意一个数,要求填好后任意两行互不等价且任意两列互不等价,求方案数。
    运用上述方法,把一行看作一个物品,则易知 (G(i)=(c^i)^{underline{m}})
    斯特林反演后统计答案即可。分治NTT算第一类斯特林数并用多点求值算下降幂可以做到 (O(nlog^2n))

  • 相关阅读:
    k邻近
    C语言实现pwd—关于linux文件系统
    Linux多线程
    有关临时表
    毕设—线程池thread_pool(草)
    3-26
    3-25
    3-22
    关于中国神华
    3-20
  • 原文地址:https://www.cnblogs.com/bestwyj/p/11247429.html
Copyright © 2011-2022 走看看