奔小康赚大钱 hdu 2255( KM )
http://acm.split.hdu.edu.cn/showproblem.php?pid=2255
带权匹配问题:
#include <stdio.h> #include <algorithm> #include <string.h> #include <vector> using namespace std;#define maxn 330 #define INF 0xfffffffint maps[maxn][maxn], vx[maxn], vy[maxn], used[maxn], lx[maxn], ly[maxn], s[maxn], n; ///vx[i]代表第i人是否在增广路上 ///used[i]代表第i个村庄是否被占用 ///lx[],ly[]代表人和村庄的顶标int Find(int u) {vx[u] = 1;for(int i=1; i<=n; i++){if(!vy[i] && lx[u]+ly[i] == maps[u][i]){vy[i] = 1;if(!used[i] || Find(used[i])){used[i] = u;return 1;}}else{s[i] = min(s[i], lx[u]+ly[i]-maps[u][i]);}}return 0; }int KM() {memset(used, 0, sizeof(used));memset(lx, 0, sizeof(lx));memset(ly, 0, sizeof(ly));for(int i=1; i<=n; i++)for(int j=1; j<=n; j++)lx[i] = max(maps[i][j], lx[i]);///初始化人的顶标for(int i=1; i<=n; i++)///寻找最大匹配 {for(int j=1; j<=n; j++)s[j] = INF;while(1){memset(vx, 0, sizeof(vx));memset(vy, 0, sizeof(vy));if(Find(i)) break;///找到增广路就退出,否则改变顶标,直到找到为止int d = INF;for(int j=1; j<=n; j++){if(!vy[j]) d=min(d, s[j]);}for(int j=1; j<=n; j++){if(vx[j]) lx[j] -= d;if(vy[j]) ly[j] += d;}}}int ans = 0;for(int i=1; i<=n; i++)ans += maps[used[i]][i];return ans; }int main() {while(scanf("%d", &n)!=EOF){for(int i=1; i<=n; i++)for(int j=1; j<=n; j++)scanf("%d", &maps[i][j]);printf("%d\n", KM());}return 0; }
View Code
转载于:https://www.cnblogs.com/daydayupacm/p/5795879.html
奔小康赚大钱 hdu 2255( KM )相关推荐
- 奔小康赚大钱 HDU - 2255( 二分图匹配KM算法详解)
题目 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子. 这可是一件大事,关系到人民的住房问题啊.村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住(如果有老百 ...
- 二分图最大权匹配问题KM算法讲解 HDU 2255 奔小康赚大钱
作者:logosG 链接:https://www.cnblogs.com/logosG/p/logos.html (讲解的KM算法,特别厉害!!!) KM算法: 现在我们来考虑另外一个问题:如果每个员 ...
- 【HDU 2255】奔小康赚大钱 (最佳二分匹配KM算法)
奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- KM算法 最优匹配(最大权匹配) hdu 2255 奔小康赚大钱 最小权匹配 poj 2195 Going Home
最大权二分匹配问题就是给二分图的每条边一个权值,选择若干不相交的边,得到的总权值最大.解决这个问题可以用KM算法.理解KM算法需要首先理解"可行顶标"的概念.可行顶标是指关于二分图 ...
- HDU 2255 奔小康赚大钱 带权二分图匹配 KM算法
奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- 二分图最佳匹配 KM算法 Hdu2255奔小康赚大钱 + Poj 3565 Ants
2014-10-4 更新 在最下面增加了基于邻接表的模板 理论:http://blog.sina.com.cn/s/blog_691ce2b701016reh.html http://philosci ...
- HDUOJ 2255 奔小康赚大钱
HDUOJ 2255 奔小康赚大钱 题目链接 Problem Description 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子. 这可是一件大事,关系到人民的住 ...
- HDUOJ---------2255奔小康赚大钱
奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- hdu 2255 奔小康赚大钱--KM算法模板
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 题意:有N个人跟N个房子,每个人跟房子都有一定的距离,现在要让这N个人全部回到N个房子里面去,要 ...
最新文章
- 美多商城之验证码(异步方案)
- 计算机视觉——基本知识概念
- 解决嵌套list类型的JSONObject/JSONArray转换成原来list问题。
- 论坛高级签名_2020行走的酒窖首届中国(华北)定制白酒高峰论坛在天津盘山举行...
- STM32之独立版USB(Host)驱动+MSC+Fatfs移植
- 前端学习(1328):服务器基础概念
- jquery user interface
- Windows 10环境下「MSCOCO Captions」评估代码踩坑记录
- 百姓大药房JAVA面试_「老百姓大药房面试|面试题」-看准网
- 如何在Linux中符号链接文件? [关闭]
- Shell命令打包Android apk
- 红帽linux开启vnc服务器,红帽Linux上使用VNC
- python的集合是什么_Python集合的概念是什么?Python集合的介绍
- wpf给模板控件添加事件一
- java替换word空格,java替换word 2007字符串
- 原则与思维模型--《思维模型》0
- Jmeter-添加PerfMon (Servers Performance Monitoring),报错解决办法
- windows7在安装vc14的时候报错(0x80240017)
- Sametime SDK
- 几分钟教你轻松搞定ALM安装