二分图匹配
HonniLin
double fighting
展开
-
POJ 3041 - Asteroids(二分图匹配)
题目:http://poj.org/problem?id=3041题意:n*n的矩阵,给出有敌人的位置,每根剑可以伤害一行或一列,求出将敌人全部伤害的用的最少的剑数。思路;行为左集,列为右集,有敌人的行列连边。要将所有敌人覆盖,即将敌人所在的行或列覆盖就可以了,则转化成顶点的最小覆盖。一个重要的定理:顶点的最小覆盖数 = 最大匹配数。所以题目只要求最大匹配数就可以了原创 2015-04-15 20:56:22 · 488 阅读 · 0 评论 -
POJ 2226 - Muddy Fields(二分图匹配)
题目:http://poj.org/problem?id=2226题意:R*C的矩阵,将泥地(*)铺满但不能覆盖草地(.),求出最少的木板段数。思路:本题的特别之处是不能覆盖菜地,若一行中的泥地中间有菜地的话则应将泥地分成两点,列的话也同样操作。AC.#include #include #include using namespace std;const原创 2015-04-15 22:18:01 · 483 阅读 · 0 评论 -
POJ 1466 - Girls and Boys(二分图匹配)
题目:http://poj.org/problem?id=1466题意:n个男生,n个女生,之间存在一些关系。问两两不存在关系的学生最多有多少个。思路:二分图,最大独立点集 = n - 最大匹配数。AC.#include #include #include using namespace std;int n, vN, uN;int g[505][505]原创 2015-04-20 22:34:32 · 563 阅读 · 0 评论 -
POJ 1422 - Air Raid(二分图匹配)
题目:http://poj.org/problem?id=1422题意:n个点m条边,求出最少数量的伞兵,使得这些伞兵能访问所有的路口。思路:二分图, 最小路径覆盖. 一个重要定理: 最小路径覆盖数 = 节点数-最大匹配数 = 最大独立集。 使用拆点法。若有边,则构造一条边,得到一个二分图,其最大匹配相当于原图中的最小路径覆盖的边数,那么原图的最小路径覆盖数 = 节点数原创 2015-04-16 15:21:53 · 473 阅读 · 0 评论 -
POJ 2195 - Going Home(二分图最大权匹配)
题目:http://poj.org/problem?id=2195题意:N个人N个房子,每个人到房间都会有一定的距离,要求所有的人都回到房间中,求出最小的总距离。思路:二分图最大匹配模板。将每个人到所有的房间建边,边的权值为人到房子的距离,因为是求最小权值则将边的权值取反。最后答案取反即可。AC.#include #include #include #in原创 2015-04-16 17:32:49 · 490 阅读 · 0 评论 -
POJ 2239 - Selecting Courses(二分图匹配)
题目:http://poj.org/problem?id=2239题意:n种课,每种课有t个时间,时间包括节数a和星期数b,求出一个星期最多能选多少课,那些课的时间不能重合。思路:二分图匹配。左集合表示课程,右集合表示课程的时间:a*12+b。建边求最大匹配。AC.#include #include #include using namespace st原创 2015-04-16 20:39:53 · 452 阅读 · 0 评论 -
POJ 2536 - Gopher II(二分图匹配)
题目:http://poj.org/problem?id=2536题意:给出n只虫,m个洞的坐标,虫只有到达洞中才安全,一个洞最多装一只虫,超过s秒没有在洞中的虫子就会被吃掉。虫子的行走速度是v,求出被吃掉的虫子最少数量。思路:二分图匹配。左集表示虫子,右集表示洞,虫子与洞的距离小于等于s*v 时连边,求得的最大匹配数为受到保护的虫子,则答案为n-最大匹配数。AC.原创 2015-04-16 21:56:25 · 444 阅读 · 0 评论 -
Codeforces Round #311 (Div. 2) C(技巧) *D(二分图染色)
C. Arthur and Tablehttp://codeforces.com/contest/557/problem/C题意:一张桌子有n条桌腿,每条桌腿有相应的长度和移动花费值,要使桌子平稳,最长桌腿的数量M 与桌腿的数量关系为 M*2>N,求出使桌子平稳的最小花费值。思路:将桌腿按照长度由大到小排序,依次以不同长度的桌腿cnt 作为桌子的平稳支撑,保留另外cnt-1条花费值原创 2015-07-09 16:56:15 · 706 阅读 · 0 评论 -
HDU 3335 - Divisibility(二分图)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3335题意:求出n个数中互相不为倍数的最大集合,输出集合元素个数。思路:题目转化为最大独立点集。AC.#include #include #include #include using namespace std;const int maxn = 1005;lo原创 2015-08-16 21:27:44 · 588 阅读 · 0 评论