Solution
首先,我们考虑只染红色/蓝色的情况。
假设当前染了条边,那么一定在其中一边选择了
个点,这部分的方案数为
;
而在另外一边,选择个点的顺序不同会产生不同的方案,这部分的方案数为
;
所以,个点的完全二分图只连
条红色/蓝色边的方案数为
;
总的方案数即为。
那么,染两种颜色的方案数就很明显了:。
这个重复部分,利用(我现学的)容斥知识可以知道,是;
故而。
注意到,这个需要
的复杂度来计算,这显然是不可接受的。
实际上,这个,就是“给定一个
行
列的方格图,选择其中的若干个格子,满足任意两个选中的格子不在同一行/同一列”的方案数(lightOJ-1005, 选择
个格子的版本)。
基于此,考虑如何从的结果转移到
的结果:
因为多了一行一列共
个格子,产生了
种选择(不选也是一种情况);
若是选择的格子在前
行/列,那么可能存在一个同一行/列的格子已经被选中了,这个格子的位置有
种情况;
在抠掉重复的这个格子(以及新增的一行一列)之后,剩余的
阶方格图必须要是合法状态,有
种情况;
所以,可以得出,这样就可以
递推求解了。(注意第
点中,因为对称性,只需考虑在前
行的情况即可,不需考虑前
列的情况)