奔小康赚大钱 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 0xfffffff int 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] = ; for(int i=; i<=n; i++)
{
if(!vy[i] && lx[u]+ly[i] == maps[u][i])
{
vy[i] = ; if(!used[i] || Find(used[i]))
{
used[i] = u;
return ;
}
}
else
{
s[i] = min(s[i], lx[u]+ly[i]-maps[u][i]);
}
}
return ;
} int KM()
{
memset(used, , sizeof(used));
memset(lx, , sizeof(lx));
memset(ly, , sizeof(ly)); for(int i=; i<=n; i++)
for(int j=; j<=n; j++)
lx[i] = max(maps[i][j], lx[i]);///初始化人的顶标 for(int i=; i<=n; i++)///寻找最大匹配
{
for(int j=; j<=n; j++)
s[j] = INF; while()
{
memset(vx, , sizeof(vx));
memset(vy, , sizeof(vy)); if(Find(i)) break;///找到增广路就退出,否则改变顶标,直到找到为止 int d = INF; for(int j=; j<=n; j++)
{
if(!vy[j]) d=min(d, s[j]);
} for(int j=; j<=n; j++)
{
if(vx[j]) lx[j] -= d;
if(vy[j]) ly[j] += d;
}
}
} int ans = ; for(int i=; i<=n; i++)
ans += maps[used[i]][i]; return ans;
} int main()
{
while(scanf("%d", &n)!=EOF)
{
for(int i=; i<=n; i++)
for(int j=; j<=n; j++)
scanf("%d", &maps[i][j]); printf("%d\n", KM());
}
return ;
}
奔小康赚大钱 hdu 2255( KM )的更多相关文章
- 奔小康赚大钱 HDU - 2255(最大权值匹配 KM板题)
		奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ... 
- 奔小康赚大钱 hdu 2255
		奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ... 
- P - 奔小康赚大钱 - hdu 2255(带权值的匹配)
		分析:这是一个KM的模板题,也就不多说了,KM最复杂的情况都能过,下面是没有优化过的代码: ****************************************************** ... 
- 二分图最大权匹配问题&&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 Subm ... 
- HDU 2255 奔小康赚大钱 (KM算法 模板题)
		奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ... 
- HDU 2255 ——奔小康赚大钱——————【KM算法裸题】
		奔小康赚大钱 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Statu ... 
- [ACM] HDU 2255 奔小康赚大钱 (二分图最大权匹配,KM算法)
		奔小康赚大钱 Problem Description 传说在遥远的地方有一个很富裕的村落,有一天,村长决定进行制度改革:又一次分配房子. 这但是一件大事,关系到人民的住房问题啊. 村里共同拥有n间房间 ... 
- hdu 2255 奔小康赚大钱 (KM)
		奔小康赚大钱Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ... 
随机推荐
- JSR 303 - Bean Validation 介绍及最佳实践
			JSR 303 - Bean Validation 介绍及最佳实践 JSR 303 – Bean Validation 是一个数据验证的规范,2009 年 11 月确定最终方案.2009 年 12 月 ... 
- SQLServer2012中用于记录数据操作时刻的附加字段使用datetime2(3)就可以了
			datetime2(3)精确到毫秒(听说),约等于2005时代的datetime类型.实际上后者是精确到3.33毫秒(也是听说). ) = GETDATE(); ) = GETDATE(); ) = ... 
- empty()和isset()的区别
			如果变量为0,则empty()会返回TRUE,isset()会返回TRUE:如果变量为空字符串,则empty()会返回TRUE,isset()会返回TRUE:如果变量未定义,则empty()会返回TR ... 
- I do not want to inherit the child opacity from the parent in CSS(不想让子元素继承父元素的透明度)
			Instead of using opacity, set a background-color with rgba, where 'a' is the level of transparency. ... 
- IE10、IE11解决不能播放Flash的问题!
			http://jingyan.baidu.com/article/154b46315421b528ca8f41e4.html ie的问题向来是windows系统的传统问题之一.几乎每个版本的windo ... 
- GC之六--SystemGC完全解读
			概述 JVM的GC一般情况下是JVM本身根据一定的条件触发的,不过我们还是可以做一些人为的触发,比如通过jvmti做强制GC,通过System.gc触发,还可以通过jmap来触发等,针对每个场景其实我 ... 
- 解决Tomcat catalina.out 不断成长导致档案过大的问题
			Tomcat的网站上的说法http://wiki.apache.org/tomcat/FAQ/Logging#Q6: System.out 和 System.err 都被打印到 catalina.ou ... 
- A*算法入门
			来源:http://www.cppblog.com/mythit/archive/2009/04/19/80492.aspx 在看下面这篇文章之前,先介绍几个理论知识,有助于理解A*算法. 启发式搜索 ... 
- OpenJudge解题经验交流
			1.1编程基础之输入输出01:Hello, World! 02:输出第二个整数PS:a,b需用longint类型接收 03:对齐输出 04:输出保留3位小数的浮点数 05:输出保留12位小数的浮点数 ... 
- CentOS6.4 安装 erlang
			wget http://www.erlang.org/download/otp_src_17.0.tar.gz -P /usr/local/src/ wget http://www.erlang.or ... 
