雅礼集训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]
]
后记
杂题同样不写,考之前看一下。