匹配
文章平均质量分 81
KIDGINBROOK
这个作者很懒,什么都没留下…
展开
-
KM算法 详解+模板 出自http://blog.sina.com.cn/s/blog_691ce2b701016reh.html
先说KM算法求二分图的最佳匹配思想,再详讲KM的实现。【KM算法求二分图的最佳匹配思想】对于具有二部划分( V1, V2 )的加权完全二分图,其中 V1= { x1, x2, x3, ... , xn }, V2= { y1, y2, y3, ... , yn },边具有权值 Wi,j 。该带权二分图中一个总权值最大的完美匹配,称之为最佳匹配。 记 L(x) 表示结点 x转载 2013-11-16 23:27:44 · 758 阅读 · 0 评论 -
[JSOI2009]游戏Game 匹配
很好的题,原创 2014-06-26 14:44:44 · 768 阅读 · 0 评论 -
hdu 3829 Cat VS Dog 最大点独立集
可以想到是个二分图,喜欢狗的原创 2014-04-17 17:19:34 · 499 阅读 · 0 评论 -
poj 2239 Selecting Courses 匹配
课程为x节点,时间为y节点,连边求最大匹配#include #include #define maxn 310int nx,ny;int g[maxn][maxn],ans,sx[maxn],sy[maxn];int cx[maxn],cy[maxn];int path(int u){ sx[u]=1; int v; for(v=1;v<=ny;v++)原创 2014-03-08 15:56:37 · 506 阅读 · 0 评论 -
hdu 2236 匹配
#include #include #define maxn 110int nx,ny;int map[maxn][maxn],ans,sx[maxn],sy[maxn];int cx[maxn],cy[maxn];int down;int l,r,mid;int path(int u){ sx[u]=1; int v; for(v=1;v<=ny;v++原创 2013-12-15 13:16:21 · 541 阅读 · 0 评论 -
poj 3041 Asteroids 点覆盖(匹配)
在一个n*n网格上有一些小行星,一发子弹可以摧毁一行或一列的小行星,问最少需要多少发子弹可以摧毁全部小行星。建立行与列的二分图,若第 i 行第 j 列有小行星则在 xi 与 yj 间连一条边,对于每一条边的两个顶点必须至少有一个被选择,即最小点覆盖, 由konig定理,点覆盖数等于匹配数,所以用匈牙利算法即可。#include #include #define N 500int原创 2013-11-11 23:33:02 · 665 阅读 · 0 评论 -
hdu 2458 Kindergarten 匹配
题目大意:幼儿园中所有的男孩之间都互相认识,所有的女孩都互相认识,男孩和女孩之间有一部分互相认识,求一个最大完全子图(最大团),即去一些顶点,使得他们之间都互相认识,并使取出的节点数最多。男孩和女孩本身就是完全子图,将女孩看成一个集合,男孩看成一个集合,不能直接选择认识关系作为边集(因为这样不符合二分图定义),所以选认识关系的补集作为边集,即在不认识的人之间连边,则最大完全子图即即对应最大点独原创 2013-11-12 23:06:24 · 732 阅读 · 0 评论 -
zoj 1525 Air Raid 有向无环图的最小路径覆盖(匹配)
题目大意:先解释有向无环图的路径覆盖,在图中找一些不相交的简单路径,使之覆盖图中所有顶点,且每一顶点只有一条路径与之关联,也就是说,若沿着这些路径中每条路径从起点走到终点,则可以恰好经过图中每一个顶点一次且仅一次。该题是求最小路径覆盖,即使得路径条数最小。题中的限制在顶点,将图转换为二分图,每个顶点v拆为v*和v**,若在图中存在从u到v的有向边,则在二分图中连接一条从u*到v**的边。则有公原创 2013-11-12 13:32:41 · 574 阅读 · 0 评论 -
hdu 1054 Strategic Game 树上的点覆盖集
题目即求树上的点覆盖数。对于一个图的点覆盖集,都不存在多项式内的解法,但如果是树的话,却挺容易,有三种方法,第一个是贪心,第二个是树形dp,第三个是二分图匹配(树是一个二分图),我是用贪心做的,先深度优先遍历一遍得到遍历序列,将遍历序列反向(即后序遍历序列)进行贪心,这样可以保证对于每个节点来说,当其子树都被处理过后才轮到该节点,保证了贪心的正确性,贪心思路为:若当前点和当前点的父节点都不属于原创 2013-11-18 23:43:08 · 813 阅读 · 0 评论 -
gcj d题 Fashion Show 二分匹配
题目大意给定N*N的棋盘和一些士兵,士兵有三种分别为'x','+','o',如果没有士兵则用'.'表示。一个格子最多放置一个士兵,并满足以下要求1、任意两个在同一条横线或者竖线上的士兵中必须有一个'+'2、任意两个在同一条斜线上的士兵中必须有一个'x'现在可以进行的操作是:1、将已存在的士兵'x'或者'+'升级为'o'2、将任意一种士兵放在空格子上问最佳操作原创 2017-05-04 16:23:44 · 458 阅读 · 0 评论