【每日一题】二分图染色

二分图染色

https://ac.nowcoder.com/acm/problem/13229

Solution

首先,我们考虑只染红色/蓝色的情况。

假设当前染了条边,那么一定在其中一边选择了个点,这部分的方案数为

而在另外一边,选择个点的顺序不同会产生不同的方案,这部分的方案数为

所以,个点的完全二分图只连条红色/蓝色边的方案数为

总的方案数即为

那么,染两种颜色的方案数就很明显了:

这个重复部分,利用(我现学的)容斥知识可以知道,是

故而

注意到,这个需要的复杂度来计算,这显然是不可接受的。

实际上,这个,就是“给定一个列的方格图,选择其中的若干个格子,满足任意两个选中的格子不在同一行/同一列”的方案数(lightOJ-1005, 选择个格子的版本)。

基于此,考虑如何从的结果转移到的结果:

  1. 因为多了一行一列共个格子,产生了种选择(不选也是一种情况);

  2. 若是选择的格子在前行/列,那么可能存在一个同一行/列的格子已经被选中了,这个格子的位置有种情况;

  3. 在抠掉重复的这个格子(以及新增的一行一列)之后,剩余的阶方格图必须要是合法状态,有种情况;

所以,可以得出,这样就可以递推求解了。(注意第点中,因为对称性,只需考虑在前行的情况即可,不需考虑前列的情况)

Code

戳这里

全部评论

相关推荐

粗心的雪碧不放弃:纯学历问题,我这几个月也是一直优化自己的简历,后来发现优化到我自己都觉得牛逼的时候,发现面试数量也没有提升,真就纯学历问题
点赞 评论 收藏
分享
11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
4 收藏 评论
分享
牛客网
牛客企业服务