组合容斥计数技巧

小学奥数容斥

如果有:

\[f(m)=\sum_{i=m}^{n}\binom{i}{m} \times g(i) \]

那么:

\[\sum_{i=1}^{n}g(i)=f(1)-f(2)+f(3)-f(4)+...=\sum_{i=1}^{n}(-1)^{i+1} \times f(i) \]

适用于DP数组需要使用\(\sum_{i=1}^{n}g(i)\)推出,并且可以快速计算\(f(n)\)的情况(通常\(f(0),g(0)\)不存在/无意义)。

证明方法:二项式反演

图计数的一些不知道有用没用的套路

如果要求图连通,可以通过容斥弱化限制条件,所有方案的减去不连通的方案,通过枚举编号最小的点所在连通块的大小以保证不会重复计算。

如果要求是DAG,因为DAG上必然存在入度为\(0\)的点,所以可以枚举度数为\(0\)的点的个数,然后让这些点向其他点连边。但是其他点中也有可能存在度数为\(0\)的点,所以还要用上面写的小学奥数容斥处理一下。

未完待续......

posted on 2019-02-18 17:12  ErkkiErkko  阅读(258)  评论(0编辑  收藏  举报