• 二分图匹配总结


    做的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个城市都要覆盖无线,若放置一个基站,那么它至多可以覆盖相邻的两个城市。
    问至少放置多少个基站才能使得所有的城市都覆盖无线?

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

  • 相关阅读:
    mybatis调用oracle存储过程
    java heap space
    汉字转拼音
    Go调用cpp类方式一
    ETCD节点故障恢复
    goroutine 加 channel 代替递归调用,突破递归调用的层级限制
    vscode debug golang
    mysql分组和去重同时使用
    github、gitlab 管理多个ssh key
    Qt连接MySQL
  • 原文地址:https://www.cnblogs.com/quintessence/p/8006201.html
Copyright © 2020-2023  润新知