二分图匹配总结

做的kuangbin的专题,实际上几个月之前就做完了。今晚上机考到这个,复习一下。(题意就直接借用其他博客的了)

HDU 1045

题意:题目给出一个n和一幅N*N的图,图中包含'.','X'两种字符,要求在上面放上碉堡,碉堡能攻击他所在的行和列,但不能攻击墙,求最多能放多少个碉堡.

思路:建图方式为将 连续的行、连续的列分别作为二分图中两部分的点。两点连边,当且仅当作为‘.’的某点(i,j)对应于二分图中的两点。

 

HDU 2444

题意:首先判断所有的人可不可以分成两部分,每部分内的所有人都相互不认识。如果可以分成 则求两部分最多相互认识的对数。

思路:至少有两个点且不存在偶环的即为二分图。判断方法即为染色法,只要全染后不存在同色相邻点即可。

 

HDU1083

题意:有p门的课,每门课都有若干学生,现在要为每个课程分配一名课代表,每个学生只能担任一门课的课代表,如果每个课都能找到课代表,则输出"YES",否则"NO"。

思路:二分图一侧学生、一分课,按题目要求连边,最大匹配与课程数相等即YES。

 

HDU1281

题意:

在一个N*M大小的棋盘中,有K个空位置,(1)在这些空位置上最多能放多少的“车”(一行或一列最多一个)。(2)空位置中,有的位置若不放“车”,就无法保证放尽量多的“车”,这样的格子被称做重要点,求重要点的个数

思路:行列作为二分图两部分,有点则连边。求最大匹配,枚举删去每一个点,最大匹配发生改变即为重要点。

 

HDU2819

题意:交换图的某些行或者是某些列(可以都换),使得这个N*N的图对角线上全部都是1.

思路:只进行行变换与都进行是等价的。相当于重新安排这些行,到1——N行的位置,使得每一个i行i列的位置均为1。原本的各行(直接按输入顺序编号为1——n)作为二分图一侧,最终行编号作为二分图右侧。可以把某编号i的行放到最终的第j行,就在二分图中连边。求最大匹配,如果为N则可以。

 

HDU2389

题意:第一行案例数,每个案例第一行 代表还有多少单位时间开始下雨,然后是 N个访客,接下来N行是 每个访客的位置(一维坐标平面内)和他的移动速度,接下来M行 代表雨伞数目,接下来M行表示各个雨伞的位置,问在下雨前 最多有多少人能够拿到雨伞(两个人不能共用一把伞)。

思路:人与可到的伞连边,求最大匹配。

 

HDU4185

题意:每次恰好覆盖相邻的两个#,不能重复,求最大覆盖次数。

思路:离散化所有#,相邻的#连边。求最大匹配。

 

POJ3020

题意:

一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,若放置一个基站,那么它至多可以覆盖相邻的两个城市。
问至少放置多少个基站才能使得所有的城市都覆盖无线?

思路:相邻城市连边,求最大匹配。

 

posted @ 2017-12-08 17:00  perplex  阅读(737)  评论(0编辑  收藏  举报