poj3565Ants(KM-几何与图论的结合)】的更多相关文章

题目:http://poj.org/problem?id=3565 首先,我们神奇地发现,没有相交边的匹配可以转化为距离和最小的匹配,所以可以使用KM算法求带权匹配: 要求的是距离和最小,所以把边权转化成负值来求最大: KM算法有点难理解,看了许多博客,总算朦胧懂了: 首先,每个点有一个“顶标”,用来计算边权和,起初所有左部点的顶标都为相连边的最大边权,右部点的为0: 两个点匹配成功,仅当其顶标和等于其边权(所以可以通过调整顶标来控制边权): 一次dfs没有成功返回0时,我们已经记录下它经过的所…
突然发现考前复习图论的时候直接把 KM 和 稳定婚姻 给跳了--emmm 结果现在刷训练指南就疯狂补档.QAQ. KM算法--二分图最大带权匹配 提出问题 (不严谨定义,理解即可) 二分图 定义:将点集 \(V\) 划分成两个不相交的集合 \(V_1,V_2\) (通常称为左右部点)使得不存在 \(u\in V_1,v\in V_2\) 且 \((u,v)\in E\) . 最大匹配 :给定一张二分图,求一个子图 \(G'\) ,称 \(G'\) 中的边为匹配边,原图 \(G\) 中的其他边为非…
链接 可以看出蓝的之和一定比红的之和要大,也就是说符合条件的匹配一定是权值最小的,所以二分图的最佳完美匹配..KM #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<stdlib.h> #include<vector> #include<cmath> #include<queue> #inclu…
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABPoAAANFCAIAAABtIwXVAAAgAElEQVR4nOydeVxTV/r/n9ertaJEC4…
290. [CTSC2008] 丘比特的烦恼 ★★★   输入文件:cupid.in   输出文件:cupid.out   简单对比 时间限制:1 s   内存限制:128 MB 随着社会的不断发展,人与人之间的感情越来越功利化.最近,爱神丘比特发现,爱情也已不再是完全纯洁的了.这使得丘比特很是苦恼,他越来越难找到合适的男女,并向他们射去丘比特之箭.于是丘比特千里迢迢远赴中国,找到了掌管东方人爱情的神——月下老人,向他求教. 月下老人告诉丘比特,纯洁的爱情并不是不存在,而是他没有找到.在东方,人…
Tour Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 2628    Accepted Submission(s): 1285 Problem Description In the kingdom of Henryy, there are N (2 <= N <= 200) cities, with M (M <= 30000…
如果,将求二分图的最大匹配的所有匹配边的权重看做1 那么用匈牙利算法求二分图的最大匹配的问题也可以看成求二分图的最大权匹配 如果边权是特例,我们就要使用KM算法来做了 这个算法其实还是比较难的,会用就不错了,更不要说证明了 这里以HDU2255为例,这是一个裸题 在这个题目里面X和Y的size是一样的 然后我们稍微介绍一下这个算法(详细的以后再说吧,目前能力不够) int n,nx,ny,ans; int linker[maxn],lx[maxn],ly[maxn],slack[maxn],vi…
#include <iostream> #include <cstring> #include <cstdio> using namespace std; const int MAXN = 305; const int INF = 0x3f3f3f3f; int love[MAXN][MAXN]; // 记录每个妹子和每个男生的好感度 int ex_girl[MAXN]; // 每个妹子的期望值 int ex_boy[MAXN]; // 每个男生的期望值 bool vi…
ArcGIS:网络分析(转)   由于之前对网络分析的理解有很多问题,所以在网上找了一些资料,这是其中一篇我觉得比较好的,所以就整理了一下,发到网上来,留个底吧,呵呵 注:关于几何网络的建立见前面的<空间数据采集组织篇> 理论基础:图论和运筹学 定义:利用运筹学建立模型,再利用其网络本身的空间关系,采用数学的方法来实现这个模型,最终得到结果,来指导现实和应用. 网络分析的基础知识: 1.网络的两个基本成分:线(edges)和交点(junctions). 边线可以表示街道.管线和河流等信息,交点…
题意: 有n个订单,m个工厂,第i个订单在第j个工厂生产的时间为t[i][j],一个工厂可以生产多个订单,但一次只能生产一个订单,也就是说如果先生产a订单,那么b订单要等到a生产完以后再生产,问n个订单用这m个工厂全部生产完需要最少的时间是多少. SOL: 与平时的带权二分图不同的是这个问题相当于一个多重匹配的问题,且每个点的权值需要考虑它之前的点,其实可以比如说每个工厂搞一个set什么的维护一下然后乱搞(不知道行不行看着好像挺好). 正这考虑不是很方便于是我们可以反着来,最后被生产的点只需要它…