对KM的深入理解请看以下博客(写的不错的):http://blog.sina.com.cn/s/blog_691ce2b701016reh.html

我的理解:如有错误,请大牛指正!!

1.KM()算法实际就是一种遍历,从权值最大的开始匹配,如果成功的完备匹配了,那这个权值一定是最大的权值。因为我们是从最大的开始一点点小下来遍历的。

2.slack[  ]  这个数组 可以说是一个 松弛变量数组 ,目的是为了 增加匹配。

3.实际也没什么好讲的就是不断的增广,很多也都这样,松弛迫近,跟那什么单纯形法有想通之处。

4. 匈牙利算法进行匹配的寻找。

hdu 2255

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;const int M=400,inf=0x3f3f3f3f;
int w[M][M],link[M],lx[M],ly[M];
int nx,ny,n,slack[M];
int visx[M],visy[M];int DFS(int x){visx[x]=1;int i;for(i=1;i<=ny;i++){if(visy[i]) continue;int t=lx[x]+ly[i]-w[x][i];if(t==0){visy[i]=1;if(link[i]==-1||DFS(link[i])){link[i]=x;return 1;}}else if(slack[i]>t) slack[i]=t;}return 0;
}int KM()
{int i,j;memset(link,-1,sizeof(link));memset(ly,0,sizeof(ly));for(i=1;i<=nx;i++)for(j=1,lx[i]=-inf;j<=ny;j++){if(lx[i]<w[i][j]) lx[i]=w[i][j];}for(i=1;i<=nx;i++){for(j=1;j<=ny;j++) slack[j]=inf;            while(1){memset(visx,0,sizeof(visx));memset(visy,0,sizeof(visy));if(DFS(i)) break;int d=inf;for(j=1;j<=ny;j++) if(!visy[j]&&slack[j]<d)d=slack[j];for(j=1;j<=nx;j++)if(visx[j]) lx[j]-=d;for(j=1;j<=ny;j++)if(visy[j])ly[j]+=d;elseslack[j]-=d;}}int res=0;for(i=1;i<=ny;i++){if(link[i]>-1)res+=w[link[i]][i];}return res;
}
int main()
{int i,j;while(scanf("%d",&n)!=EOF){nx=ny=n;for(i=1;i<=nx;i++)for(j=1;j<=ny;j++)scanf("%d",&w[i][j]);printf("%d\n",KM());}return 0;
}

hdu 2255二分图最大权值匹配的KM 算法相关推荐

  1. 【HDU - 2255】奔小康赚大钱(KM算法模板,二分图最优匹配)

    题干: 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子.  这可是一件大事,关系到人民的住房问题啊.村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住(如果有老 ...

  2. 二分图最大权匹配问题KM算法讲解 HDU 2255 奔小康赚大钱

    作者:logosG 链接:https://www.cnblogs.com/logosG/p/logos.html (讲解的KM算法,特别厉害!!!) KM算法: 现在我们来考虑另外一个问题:如果每个员 ...

  3. 匈牙利匹配、KM算法、卡尔曼滤波、SORT/deep SORT

    匈牙利匹配.KM算法 带你入门多目标跟踪(三)匈牙利算法&KM算法 - 知乎 卡尔曼滤波: 图像处理之目标跟踪(一)之卡尔曼kalman滤波跟踪(主要为知识梳理)(转载)_coming_is_ ...

  4. 二分图带权匹配、最佳匹配与KM算法

    ---------------------以上转自ByVoid神牛博客,并有所省略.   [二分图带权匹配与最佳匹配] 什么是二分图的带权匹配?二分图的带权匹配就是求出一个匹配集合,使得集合中边的权值 ...

  5. HDU 2255 二分图最佳匹配 模板题

    题目大意: 给定每一个人能支付的房子价值,每个人最多且必须拥有一套房子,问最后分配房子可得到的最大收益 抄了个别人的KM模板,就这样了... 1 #include <cstdio> 2 # ...

  6. 模板 - KM算法(O(n^3))(二分图最大权完美匹配)

    整理的算法模板合集: ACM模板 题目描述 给定一张二分图,左右部均有 n 个点,共有 m 条带权边,且保证有完美匹配. 求一种完美匹配的方案,使得最终匹配边的边权之和最大. //Data const ...

  7. 【HDU - 1533】Going Home(网络流,二分图最优匹配,KM算法)

    题干: On a grid map there are n little men and n houses. In each unit time, every little man can move ...

  8. 【UVA - 11383】Claw Golden Tiger (二分图最优匹配,KM算法原理)

    题干: 粘贴不过来... 题目大意: 500*500带权格子,每行每列要确定一个值,使row[i]+col[j] >= val[i][j],要使所有row值和col值的和最小 输出每行的row[ ...

  9. poj2195(最大权完美匹配)

    题意:m表示人,H表示房子,一个人只能进一个房子,一个房子也只能进去一个人,房子数等于人数,现在要让所有人进入房子,求所有人都进房子最短的路径. 思路:采用最大权完美匹配 最大权完美匹配:二分图最大匹 ...

最新文章

  1. CUBLAS_STATUS_ALLOC_FAILED
  2. 2020-10-13 四元数用法(不讲原理,只讲计算规则)
  3. 责任链(Chain of Responsibility Pattern)
  4. 嵌入式Linux系统中的.lds链接脚本基础
  5. Http协议(4)—HTTP认证机制
  6. 信息系统项目管理基础(1)
  7. 使用 bind 搭建DNS 服务器
  8. mac下安装elasticsearch
  9. ruby on rails_如何在Ruby on Rails应用中用Vue.js替换jQuery
  10. 在C#中对列表/数组进行碎片整理——关闭所有空白
  11. Java构建工具:Maven与Gradle的对比
  12. 黑苹果使用itlwm网卡驱动提示itlwm未运行的问题
  13. 山西阳泉中考计算机科目,阳泉中考信息技术考试
  14. 人工智能基础 | Python实现-产生式系统-文字动物识别系统
  15. AspNetPager常用属性及一些样式
  16. python中怎么压缩文件_使用Python实现文件压缩和解压
  17. linux查找文件重复项,Linux中如何使用命令查找重复文件
  18. 实战:RBAC(基于角色的权限控制)-2021.11.28
  19. “≡”3个横杠的等号的意思
  20. 软件测试为什么评审,为什么要做设计评审和测试用例评审

热门文章

  1. 白话科普系列——最好用的浏览器 Chrome,你用了么?
  2. HTTP的前世今生(HTTP1.1,HTTPS,SPDY,HTTP2.0,QUIC,HTTP3.0)
  3. 为什么将0.1f改为0会使性能降低10倍?
  4. RabbitMQ基础概念详解
  5. 用Android Studio开发Java App (Runnable Jar)
  6. 杜比收购低延迟流媒体平台Millicast
  7. 音视频技术在云会议场景的拓展和未来
  8. Twitch未来五年的视频编码战略:从H.264到 AV1
  9. 腾讯会议核心数据库TDSQL,如何做到快速无损在线扩容?
  10. nvidia nvlink互联与nvswitch介绍