hdu_2255_奔小康赚大钱(KM带权二分匹配板子)
题目连接:hdu_2255_奔小康赚大钱
存个板子
/*
其实在求最大 最小的时候只要用一个模板就行了,
把边的权值去相反数即可得到另外一个.求结果的时候再去
相反数即可,最大最小有一些地方不同。。
*/
#include <iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
const int N = ;
const int INF = (<<)-;
int w[N][N];
int lx[N],ly[N]; //顶标
int linky[N],visx[N],visy[N],slack[N];
int n;
bool find(int x){
visx[x]=;
for(int y=;y<=n;y++){
if(visy[y])continue;
int t=lx[x]+ly[y]-w[x][y];
if(t==){
visy[y] = ;
if(linky[y]==-||find(linky[y]))return linky[y]=x,;
}
else if(slack[y]>t)slack[y]=t;
}
return ;
} int KM(){
int i,j;
memset(linky,-,sizeof(linky));
memset(ly,,sizeof(ly));
for(i=;i<=n;i++){
lx[i]=-INF;
for(j = ;j<=n;j++)
if(w[i][j]>lx[i])lx[i]=w[i][j];
}
for(int x=;x<=n;x++){
for(i=;i<=n;i++)slack[i]=INF;
while(){
memset(visx,,sizeof(visx));
memset(visy,,sizeof(visy));
if(find(x))break;//找到增广轨,退出
int d=INF;
for(i=;i<=n;i++) //没找到,对l做调整(这会增加相等子图的边),重新找
if(!visy[i]&&d>slack[i])d=slack[i];
for(i=;i<=n;i++)if(visx[i])lx[i]-=d;
for(i=;i<=n;i++)
if(visy[i])ly[i]+=d;else slack[i]-=d;
}
}
int result = ;
for(i=;i<=n;i++)if(linky[i]>-)result+=w[linky[i]][i];
return result;
} int main()
{
while(scanf("%d",&n)==)
{
int cost;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
scanf("%d",&cost);
w[i][j]=cost;
}
printf("%d\n",KM());
}
return ;
}
hdu_2255_奔小康赚大钱(KM带权二分匹配板子)的更多相关文章
- HDU 2255 奔小康赚大钱(带权二分图最大匹配)
HDU 2255 奔小康赚大钱(带权二分图最大匹配) Description 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子. 这可是一件大事,关系到人民的住房问题啊 ...
- hdu2255 奔小康赚大钱 km算法解决最优匹配(最大权完美匹配)
/** 题目:hdu2255 奔小康赚大钱 km算法 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 题意:lv 思路:最优匹配(最大权完美匹配) ...
- Hdu2255 奔小康赚大钱(二分图最大权匹配KM算法)
奔小康赚大钱 Problem Description 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子. 这可是一件大事,关系到人民的住房问题啊.村里共有n间房间,刚好 ...
- hdu 2255 奔小康赚大钱 (KM)
奔小康赚大钱Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdu 2255奔小康赚大钱 KM算法模板
题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=2255 一,KM算法:(借助这个题写一下个人对km的理解与km模板) KM算法主要是用来求解图的最优匹 ...
- HDU 2255 奔小康赚大钱 KM算法题解
KM算法求的是完备匹配下的最大权匹配,是Hungary算法的进一步,由于Hungary算法是最大匹配的算法,不带权. 经典算法,想不出来的了,要參考别人的.然后消化吸收吧. 由于真的非常复杂的算法. ...
- hdu-2255 奔小康赚大钱---KM模板
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2255 题目大意: Problem Description 传说在遥远的地方有一个非常富裕的村落,有一 ...
- 【HDU2255】奔小康赚大钱-KM算法
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description ...
- hdu 2255 奔小康赚大钱--KM算法模板
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 题意:有N个人跟N个房子,每个人跟房子都有一定的距离,现在要让这N个人全部回到N个房子里面去,要 ...
随机推荐
- C C++ 中结构体与类
先来说说C和C++中结构体的不同 a) C语言中的结构体不能为空,否则会报错 1>d:\myproject\visual studio 2013\projects\myc++\main.c(71 ...
- 腾讯微博OAuthV2认证实现第三方登录
1)添加相关jar包: httpmime.jar 以下信息是必须的 //!!!请根据您的实际情况修改!!! 认证成功后浏览器会被重定向到这个url中 必须与注册时填写的一致 private Strin ...
- VBS基础篇 - VBScript过程
VBS基础篇 - VBScript过程 在 VBScript 中,过程被分为两类:Sub 过程和 Function 过程. Sub过程 Sub 过程是包含在 Sub 和 End Sub 语句之间的 ...
- 用php和imagemagick来处理图片文件的上传和缩放处理
啥也不说,直接上代码,大家可以自行添加增加水印功能: <?php /** * * @author zhao jinhan * @date 2014年1月13日11:54:30 * @email ...
- servlet第2讲(下集)----通过HttpServlet实现一个用户登录网站(继承HttpServlet)
1.计划框架 2.先建立Login的servlet (1)建立Login,编写代码,进行编译 (2)配置web.xml (3)重新加载,并且验证 (4)解决乱码问题 (5)再次加载,然后验证 ...
- vim编程配置方法
vim简介Vim 有以下几个模式:1) 正常(normal)模式,缺省的编辑模式:下面如果不加特殊说明,提到的命令都直接在正常模式下输入:任何其它模式中都可以通过键盘上的 Esc 键回到正常模式.2) ...
- .net项目svn项目管理文件清单
You can add the following files to Visual Studio source control: Solution files (*.sln). Project fil ...
- 【我与一道水题的抗争之路】 哈理工2323 Emirp(反素数)
题目: http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2323 1,打表的姿势不对. ...
- dip2px
package com.itheima.zhbj.utils; import android.content.Context; public class DensityUtils { public s ...
- 将decimal类型的数据转成2.12这样价钱的显示方式
UnitPrice = string.Format("{0:.00}", m.UnitPrice),