组合容斥计数技巧
小学奥数容斥
如果有:
\[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) 编辑 收藏 举报