看原理之前我们先来了解——匈牙利概念 在我们理解概念之后,我们知道这是一个优化时间的算法 至于原理是什么我们现在来讲(以下图片由一只秀逗提供) 首先我们先来放一张男女找伴侣的图 是不是有种鲜花插在牛粪上的感脚 我们看他们相互的连线,所连的线表示男生对某个女生有好感 那么我们男生按编号从小到大来找对象 ...
分类:
编程语言 时间:
2018-12-23 23:56:39
阅读次数:
327
最近浅学了一下匈牙利算法,略有感触,发文记录一下 匈牙利算法是用在二分图匹配中的 所以要先知道二分图的几个概念 二分图 : 把一个图的顶点划分为两个不相交的集合 U 和 V ,且使得每一条边都分别连接 U 、V 中的顶点,如果存在这样的划分,则称此图为二分图。 简单说 ...
分类:
编程语言 时间:
2018-12-23 15:19:06
阅读次数:
171
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 30799 Accepted Submission(s): 13289 Problem D ...
分类:
编程语言 时间:
2018-11-28 22:30:45
阅读次数:
295
"嘟嘟嘟" 虽然我已经会网络流了,但是还是学了一个匈牙利算法。 ——就跟我会线段树,但还是学了树状数组一样。 其实匈牙利算法挺暴力的。简单来说就是先贪心匹配,然后如果左部点$i$匹配不上了,就尝试更改前面已经匹配好的点,腾出地给他匹配。 因此对于每一个点跑一遍匈牙利算法,如果这个点匹配成功,总匹配数 ...
分类:
编程语言 时间:
2018-11-25 16:31:38
阅读次数:
236
题意: 给出一个N*N的地图N 地图里面有K个障碍 你每次可以选择一条直线 消除这条直线上的所有障碍 (直线只能和列和行平行) 问最少要消除几次 题解: 如果(x,y)上有一个障碍 则把X加入点集 V1 、Y加入点集V2 并且X Y连一条边 这样构成一个新图 如果选择 V1中的点 X 那么就相当于消 ...
分类:
编程语言 时间:
2018-11-24 16:33:25
阅读次数:
167
KM算法详解+模板 大佬讲的太好了!!!太好了!!! http://www.cnblogs.com/wenruo/p/5264235.html KM算法用来求二分图最大权完美匹配。 本文配合该博文服用更佳:趣写算法系列之--匈牙利算法 本文没有给出KM算法的原理,只是模拟了一遍算法的过程。另,博主水 ...
分类:
编程语言 时间:
2018-11-22 23:49:39
阅读次数:
275
PS:其实不用理解透增广路,交替路,网上有对代码的形象解释,看懂也能做题,下面我尽量把原理说清楚 1. 基本概念 ( "部分来源" 、 "部分来源" ) 二分图: 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这 ...
分类:
编程语言 时间:
2018-11-22 11:43:00
阅读次数:
3747
博客: 匈牙利算法模板: #include<bits/stdc++.h> #define MAXN 9999 using namespace std; int nx,ny;//nx表示二分图左边顶点的个数,ny表示二分图右边顶点的个数 int m;//m代表边的条数 int cx[MAXN],cy[ ...
分类:
其他好文 时间:
2018-11-21 19:42:17
阅读次数:
162
二分图如果是没有权值的,求最大匹配。则是用匈牙利算法求最大匹配。如果带了权值,求最大或者最小权匹配,则必须用KM算法。 其实最大和最小权匹配都是一样的问题。只要会求最大匹配,如果要求最小权匹配,则将权值取相反数,再把结果取相反数,那么最小权匹配就求出来了。 下面是几个模板: 1、匈牙利算法,例子是h ...
分类:
其他好文 时间:
2018-11-15 22:40:43
阅读次数:
184
匈牙利算法及二分图:https://www.cnblogs.com/wangjunyan/p/5563154.html 匈牙利算法:https://blog.csdn.net/sunny_hun/article/details/80627351 相关题目: hdu-1528(一般的匹配):http: ...
分类:
编程语言 时间:
2018-11-10 17:54:55
阅读次数:
146