• 斯特林反演


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

    [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))

  • 相关阅读:
    websocket协议
    LeakCanary 中文使用说明
    编程习惯1
    Spring事务管理(详解+实例)
    微信 JS API 支付教程
    mi面试题
    最锋利的Visual Studio Web开发工具扩展:Web Essentials详解(转)
    .Net 高效开发之不可错过的实用工具
    手机版开发框架集合
    node.js建立简单应用
  • 原文地址:https://www.cnblogs.com/bestwyj/p/11247429.html
Copyright © 2020-2023  润新知