NOIP 复习题之二分图
CF741C
有 \(2n\) 个人围成一圈坐在桌子边上,每个人占据一个位子,对应这 \(2n\) 个人是 \(n\) 对情侣,要求情侣不能吃同一种食物,并且桌子上相邻的三个人的食物必须有两个人是不同的,只有两种食物,问一种可行分配方式。
思路: 我们在两个点之间连边,表示他们吃的不一样。然后对于点对 \((x,y)\),连边 \(x\) 和 \(y\)。对于相邻 \(3\) 个人吃的食物不同的限制,可以直接将其强化,在 \(2i-1\) 和 \(2i\) 之间连边,可以直接保证相邻 \(3\) 个人吃的食物不同.
如何保证这样的正确性?我们需理解连出来的图一定是二分图。二分图有个性质,如果这个图不是二分图的话,那么就一定有奇环,如果没有,就一定是二分图。任何一个环都是由若干条情侣边和若干条 \((2i-1,2i)\) 边互相交错而成,所以不存在奇环。
P10936
一个入侵者 \(a\) 被第 \(b\) 号塔的第 \(c\) 次导弹袭击中,可以连边 \(a\to (b,c)\)。
因为有时间的限制,显然不能连接 \(a\to (b,+∞)\)。因为时间具有单调性,时间越多,入侵者就越能被消灭。则二分时间 \(mid\),若第 \(b\) 号塔的第 \(c\) 次导弹的发射时间小于等于 \(mid\),则连边。
最后看每一个入侵者是否被一个点对 \((b,c)\) 所连接,即可以采用二分图匹配。
CF1354E
先对图进行二分图染色。
- 染白色的点填入 \(2\),染黑色的点填入 \(1/3\)。
- 染黑色的点填入 \(2\),染白色的点填入 \(1/3\)
对于一个联通块来说,\(2\) 的数量等于黑点数量或者白点数量,二选一。因为总的 \(2\) 的数量限制为 \(n_2\),定义 \(f_{i,j}\) 代表前 \(i\) 个联通块,有 \(j\) 个 2 是否可行。背包即可。
考虑输出方案。先把每个联通块的 \(2\) 填了,这可以根据 dp 值确定。最后剩下的 \(1/3\) 直接随便加入即可。
CF1012B
考虑建立一个二分图,左边为行的编号,右边为列的编号。若 \((x,y)\) 存在标记,则连接 \(x\) 和 \(y\)。
考虑这个标记如何变化:\((r_1,c_1)+(r_1,c_2)+(r_2,c_1)\to (r_2,c_2)\),容易发现在此过程中二分图联通块数量不变。且一个联通的二分图,将在有限次操作下,变成一个完全二分图。现在只需要考虑加多少条边使整体二分图变的联通。答案就是联通块个数减一。
CF553C
考虑题目限制:其中任意三个点,连成的边合法的组合有 \(111\),\(100\)。这就意味着确定三个点中的任意两条边,就可以确定另外一条边。例如 \((1,1)\to 1,(1,0)\to 0,(1,0)\to 0,(0,0)\to 1\)。即异或值取反。
如果我们把给出的所有边连上,对于任意两个极大连通块,如果确定这两个联通块之间的任意一条边 \(0/1\),则可确定这两个联通块的所有边。这样连接会不会出现矛盾?结论是,如果两个联通块之间的边无矛盾,则不会出现矛盾。
假设最后有 \(m\) 个联通块,如何确定方案数?可以这样连:如果让 \(1\) 联通块和 \(2,3,\dots,m\) 确定关系,则 \(2,3,\dots,m\) 之间的关系可以被确定。由于两个联通块时间有 \(2\) 种方案,则答案为 \(2^{m-1}\)。
先用带权并查集先判断联通块之间的边有无矛盾!
CF1375G
树是一个二分图,我们把初始的图进行二分图染色,使得一个黑色节点周围所有与它相邻的节点都是白色节点,反之亦然。因最终是一个菊花图,则一定有一种颜色只出现一次。也就是问操作多少次会让某一种颜色只出现 \(1\) 次。
观察操作:选择相邻节点 \(a,b,c\),不妨把 \(a,c\) 设置为白色,\(b\) 设置为黑色。
- 所有与 \(a\) 相邻的节点与 \(c\) 连边,可以发现这些点颜色不变。
- 将 \(a\) 连 \(c\),则 \(a\) 的颜色变为黑色。
也就是说每一次操作只有一个节点的颜色发生变化。那么下限就是 \(min(cnt_0,cnt_1)-1\)。可证明可以取到最小值。
P2825
如果没有硬石头,那么在 \((i,j)\) 放个炸弹,可以将第 \(j\) 列和第 \(i\) 行全部炸完。也就可以对于 \((i,j)\),连边 \(i\) 和 \(j\),跑最大匹配即可。
现在有了硬石头,那么这一列和这一行就不能全部炸完。但是发现,能炸的区域一定是行的一小段,列的一小段。所以我们以 # 为分界线,重新把列和行分裂出来即可。

浙公网安备 33010602011771号