容斥专题学习总结
容斥专题学习总结
在计数时,必须注意没有重复,没有遗漏。为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。
对于一些计数题,经常会要求我们求某种要求的方案数或者是不满足某种要求的方案数(两者之间可以互相转换)。
由于题目给出的限制条件,我们无法快速的求出那种条件的方案。
但是,我们发现若不考虑所有限制条件,计算起来会比较简单,让我们以下题为例,
题意:
在\(n∗m\)的矩阵内每一行每一列都有钻石,问钻石分布的种类?
答案有可能很大,所以输出答案对\(1000000007\)取模。
这道题我们很显然可以定义\(dp[i][j]\)表示\(i\)行和\(j\)列。
可是由于前\(i\)行和前\(j\)列的方案数无法快速的求出,反之,有\(i\)行和\(j\)列的方案数我们可以快速求解。
既然有了有\(i\)行\(j\)列的方案数,那我们直接减掉不到\(i\)行和\(j\)列的方案数就好了。
这就是容斥原理的基本用法:计算当前答案,在通过容斥减掉多余的答案,最后剩下的就是答案
题单及题解汇总:
HDU-5514 Frogs
HDU-5201 The Monkey King
总之,容斥原理的题可以非常方便的求出无限制条件的方案数,然后我们对于限制条件直接减掉即可。