雅礼集训Day3 计数

雅礼集训Day3 计数

斯特林反演

[f(n)=sum_{i=0}^{n}left{egin{array}{l} n \ i end{array} ight} g(i) Longleftrightarrow g(n)=sum_{i=0}^{n}(-1)^{n-i}left[egin{array}{l} n \ i end{array} ight] f(i) ]

[f(x)=sum_{i=x}^{n}left{egin{array}{l}i \xend{array} ight} g(i) Longleftrightarrow g(x)=sum_{i=x}^{n}(-1)^{i-x}left[egin{array}{l}i \xend{array} ight] f(i) ]

特殊情况:

[f_1=sum_{i=1}^n(-1)^{i-1}(i-1)!g(i) ]

bzoj 4671 异或图

就是上面的式子,用线性基求一下g即可。

n个点m条边带标号无向连通图个数

容斥dp可以n^6,不细讲

考虑一个选了 m 条边的方案,且形成 (k) 个连通块方案块的方案是 (F_{m, k})

(m) 条边,划分出来 (j) 个块一定不两两相连, 块内任意连边,方案是 (G_{m, j})

和上面一样,斯特林反演可以得到

[F_{m, 1}=sum_{j geq 1}(j-1) !(-1)^{j-1} G_{m, j} ]

(H_{i, j, m}) 表示 DP 了 (i) 个点, 分了 (j) 个块, 当前共有 (m) 个边可以用的方案数。
则有:

[G_{m, j}=sum_{k geq m} H_{n, j, k}left(egin{array}{l} k \ m end{array} ight) ]

然后计算H的时候把j那一维省掉,每次插进一块带一个-1的系数,一个k个块的方案会算重((k-1)!)次。

min_max 容斥

[egin{array}{l} max (S)=sum_{T subseteq S}(-1)^{|T|+1} min (T) \ min (S)=sum_{T subseteq S}(-1)^{|T|+1} max (T) end{array} ]

期望状态下也成立。

k-th max

[ ext{k-th max}(S)=sum_{Tin S}(-1)^{|T|-k}{{|T|-1}choose {k-1}} ext{min}(T) ]

证明可以考虑第i大的数何时能在集合里取到min,显然是和i-1个比它大的在一起的时候,那么枚举比他大的个数带上容斥系数求和,显然只有当i=k的时候才能有1的贡献,那么二项式反演即可。

[sum_{j=1}^n {i-1choose j}f_{j}=[i=k] ]

后记

杂题同样不写,考之前看一下。

原文地址:https://www.cnblogs.com/lcyfrog/p/13129831.html