二分匹配题解

poj 2239 Selecting Courses
题意:学校一周7天每天可以开12节课,现在给出每门课开课的时间(一周可重复多次),一周中最多可以上多少门课(每门课只算一次)。
裸的水二分匹配

poj2516 Minimum Cost
题意现在有n个顾客,m个供货商,k种商品,接下来输入n行顾客分别对k种商品的需求,再接下来输入m行分别为供货商分别提供的k种商品的数目,接下来有k个n*m的矩阵,第k个矩阵的第i行j列表示将编号为k的商品从编号为j的供货商处运送到编号为i的顾客处所需要的运输费用.
思路:分别对k种商品的每一种商品做一次最小费用最大流,求出最小费用,最后将这些最小费用相加即可.标准KM
POJ 2195 Going Home
题意:一个n×m的矩阵,m表示人,H表示房子,.表示空地,人数和房子数相等 现在要让所有的人都进入不同的房子内,人只能横着或竖着走一格,问总共最少走多少步?
解:同上,最小费用流或者标准KM;
 
poj 1087 A Plug for UNIX
题意:每间房间有一些插座, 每个房客有一些设备需要充电,而两者不是很配套,如果有A号插座, 而设备1 需要B号插座, 且存在A->B的适配器,那么设备一是可以充电的,且适配器可以叠加使用。同一种适配器的数量没有限制,问最多有多少个设备同时可以充电。 
解:对适配器floyd,找出电器可以间接插在那个插排上,连边,求二分图最大匹配即可
 
ural 1721 Two Sides of the Same Coin
题意:n个命题人,有的只会写题目描述有的只会造数据,有的两者都会,现要求计算最多能组多少个小组,每个小组中有一个会写题目描述的一个会造数据的,且两人的水平相差2.
解法:首先想到如果两个人level相差2且一个会写题目描述一个会造数据则连一条边,求最大匹配,但是不能保证那些即会写题目描述又会造数据的人不被选两次,因此不能拆点后直接处理。二分匹配不拆点时序满足同一侧的点不可能有匹配,因此根据level,1 2 5 6 9 10的在一侧,3 4 7 8 11 12的在一侧,然后再按照上面的规则连边求最大匹配就可保证一个人不会被选两次 。
 
poj 2446 chessboard
题意:给出一个矩形N*M棋盘,有K个格子是空洞,然后用2*1的矩形,对所有非空洞的格子进行覆盖,并且任意有空洞的格子不被覆盖,如果可以全部覆盖输出“YES”否则输出"NO"; 
构图:每个不是空洞的格子,向周围四个不是空洞的点连边(每个格子或者和左边的格子一起被同一块木板覆盖或者被右边。。。)如果最大匹配等于非空洞格子的个数则说明有可行方案。
poj 3020 Antenna Placement与此题如出一辙
 
poj 3041 asteroids

题意:一个01矩阵,要选出一些行列,使得所有值为1的点都被选出来的行列覆盖掉,并且选出来的行列最少。

建模:二分图,左面为行,右面为列。如果矩阵中i行j列有一个点,则二分图中左i右j连一条边。(即边点互换)。然后求最小点权覆盖就行了(点权就是1,不是1的得用最大流解)。


poj 2226 Muddy Fields

题意:有R×C方阵,'*'表示洼地,需要铺上宽度为1的木板,长度不限,木板只能横放或竖放.木板可以重叠,但不能覆盖'.'(草地)求覆盖所有'*'的最少木板数.

建模:某点或者被横向板子覆盖或者被竖向板子覆盖,二分图最小点覆盖拆点构图,横向连续看为一个点集,竖向连续看为一个点集

左面:每行中最大连续的水平线段为一点;右面:每列中最大连续的竖直先点为一点。原矩阵中某个点,一定可以唯一的找到在二分图左面和在右面对应的点(十字架的交点),那么连一条线。然后同样求解最小点权覆盖就是了!

想法:和3041的思想相同之处在于:能一次覆盖的东西在二分图中作为一个点(3041为行列,2226为线段)、水平竖直分在二分图左右、某个点转化为相应的边、求解最小点全覆盖。


Poj2594 Treasure Exploration
题意:给出n各点m条单向边,问至少需要多少人能够遍历图中的所有点。
解:floyd求闭包,若a b联通(单向)则加边(a,b),最小路径覆盖=n-最大匹配。

poj 2060 Taxi Cab Scheme

题意:在二维的平面中,给出一些任务,每个任务要求在指定的时间,必须有一辆taxi从起点出发,并最终到达终点,由于可能产生时间冲突,所以可能需要多辆taxi,问需要最少的taxi数量是多少。

构图:可以将每个任务看成一个点,如果两个任务的时间没有冲突,则从时间较早的任务点向时间较晚的任务点连接一条有向边,显然,这幅图的任意一条路径上的任务都可以由一辆taxi来完成,题目所求变成找出最少的路径数量,使得这些路径能覆盖图上的所有节点。


Poj3216 Repairing Company
题意:给出各点间边长及任务所在地区,截止时间,所需时间。问至少要派多少组人能完成一天的任务;
Floyd最短路+最小路径覆盖

Poj1466 Girls and Boys 
题意:n个人分别喜欢某些人,求最大的集合,是他们之间没有感情问题。
最大点独立集,喜欢则构边,由于开始时无法区别性别因此匹配加倍,ans=n-最大匹配/2;可加并查集预处理每人性别,男女各在一侧。
poj 3692 Kindergarten
题意:g名女生相互认识,b名男生相互,某些男生和女生相互认识,问最多能找出多少人,使得他们彼此相互认识?
解法:二分图的最大团(集合内的所有点彼此相连)=补图的最大点独立集 。 

Poj 1486 Sorting Slides
题意:幻灯片对应可能的页码,问哪些幻灯片的页码是确定的。
二分匹配必须边:依次删除B中向匹配的边(a,b),若不能从a开始找到增广路径,则(a,b)是必须边,恢复后继续下一个点。

Poj 2289 Jamie's Contact Groups 
题意:有n个联系人和m个分组,每个联系人可以属于k个分组。每人只能出现在一个分组中,求人数最多那组的最小值;
解:多重二分匹配,二分枚举max, 将右侧所有点容量设为max,若左边所有的点均能匹配则假设成立。

Poj 3189 Steady Cow Assignment 
题意:给出n头牛对b个窝的喜爱程度及b个窝各种的承载能力,求为所有牛安排窝后满意程度差异的最小值;
解:多重二分匹配,二分满意差异k,枚举区间j~[s,s+k]对于每只牛i连边(i,j)。若左边的点能够全部匹配则假设k为真。

poj 2400 Supervisor, Supervisee

题意:

N个领导对N个员工排名(排在最前面的分数为0,表示评价最高),同时N个员工对N个领导排名,原则同上,

求 每个人平均分最少 。如存在多种可行方案按字典序逐个输出。

解法:二分图的最佳匹配,可以求出最小的平均值,对于可行性方案的求解,由于n只有25,一次可以生成圈排列然后逐一判断。。。。



你可能感兴趣的:(c,unix,Scheme,任务,sorting)