二分图专题补
la4043
题目要求
白书P351
平面内有n个白点和n个黑点 点和点的边权为欧几里德距离
问能否有一种匹配方案 使得一个白点恰好连接另一个黑点 并且所有的线段不相交
参考AC代码
|
|
思路
证明见白书P351
uva 11383
题目要求
白书P351
给出一个N×N的矩阵 每个格子里都有一个正整数w(i,j) 现在要给每一行确定一个整数row(i) 每列也确定一个整数col(i)
使得对于任意一个格子(i,j) w(i,j)<=row(i)+col(j) 所有的row(i)+col(i)应当尽可能小
参考AC代码
|
|
思路
km算法原理
km算法里有一个重要的不等式lx(x)+ly(y)>=w(x,y) 正好是这题所需要的条件
所以对原数组g带入km模版后 实际的效果就是
所有的lx和ly数组和最小 并且每一个位置(x,y) 满足w(x,y)<=lx[x]+ly[y]
la3989(稳定婚姻问题)
题目要求
白书P352
参考AC代码
|
|
思路
白书P352
uva 11419
题目要求
白书P355
本题与如下题目相似
转跳链接
参考AC代码
|
|
思路
与转跳链接里题目的区别在于:本题没有障碍物 一次可以直接覆盖一行或者一列 所以不需要build建图 直接用g建图
本题在上次的基础上要输出覆盖的路径 所以used和liker数组均换成l和r两个 用get_way函数即可求出
la3415
题目要求
白书P346
参考AC代码
|
|
思路
可以换转为二分图最大独立集
因为学生可以分成男生和女生两个集合 所以满足二分图 建图的时候要把男女分成两个集合建图
如果2个学生不满足这4个条件 说明他们不能一起去 那么在他们之间建图 表示这2个人不能同时去
最大独立集=n-最大匹配数
la 3126
题目要求
白书P357
参考AC代码(匈牙利)
|
|
参考AC代码(dinic)
|
|
思路
本题的模型是最小路径覆盖
拆点建好模型后用匈牙利和dinic求匹配均可
建图:
记录好每个点的开始时间和结束时间
如果某个点的结束时间+结束点到下一个开始点花费的时间<下一个点的开始时间 建一条边
代表至少有1分钟的等待时间