题解:板子题。。。。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<algorithm>
#define maxn 1005
#define inf 0x3f3f3f3f
using namespace std;
int ex_l[maxn];
int ex_r[maxn];
bool visit_l[maxn];
bool visit_r[maxn];
int match[maxn];
int e[maxn][maxn];
int slack[maxn];
int n,m;
int x,y,w;
bool dfs(int l)
{
visit_l[l]=true;
for(int r=n+1;r<=2*n;r++)
{
if(visit_r[r]==true)
continue;
int v=ex_l[l]+ex_r[r]-e[l][r];
if(v==0)
{
visit_r[r]=true;
if(match[r]==-1||dfs(match[r]))
{
match[r]=l;
return true;
}
}
else
slack[r]=min(slack[r],v);
}
return false;
}
int km()
{
memset(match,-1,sizeof(match));
memset(ex_r,0,sizeof(ex_r));
for(int l=1;l<=n;l++)
{
ex_l[l]=0;
for(int r=n+1;r<=2*n;r++)
{
ex_l[l]=max(ex_l[l],e[l][r]);
}
}
for(int l=1;l<=n;l++)
{
memset(slack,inf,sizeof(slack));
while(1)
{
memset(visit_l,0,sizeof(visit_l));
memset(visit_r,0,sizeof(visit_r));
if(dfs(l))
break;
int d=inf;
for(int r=n+1;r<=2*n;r++)
{
if(!visit_r[r])
d=min(d,slack[r]);
}
for(int k=1;k<=n;k++)
{
if(visit_l[k])
ex_l[k]-=d;
if(visit_r[k+n])
ex_r[k+n]+=d;
else
slack[k+n]-=d;
}
}
}
int ans=0;
for(int i=n+1;i<=2*n;i++)
{
ans+=e[match[i]][i];
}
return ans;
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
memset(e,0,sizeof(e));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&x);
e[i][j+n]=x;
}
}
printf("%d\n",km());
}
return 0;
}

  

hdu-2255(带权二分图)的更多相关文章

  1. P - 奔小康赚大钱 - hdu 2255(带权值的匹配)

    分析:这是一个KM的模板题,也就不多说了,KM最复杂的情况都能过,下面是没有优化过的代码: ****************************************************** ...

  2. HDU 2255 奔小康赚大钱(带权二分图最大匹配)

    HDU 2255 奔小康赚大钱(带权二分图最大匹配) Description 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子. 这可是一件大事,关系到人民的住房问题啊 ...

  3. POJ 2195 Going Home (带权二分图匹配)

    POJ 2195 Going Home (带权二分图匹配) Description On a grid map there are n little men and n houses. In each ...

  4. Luogu 1559 运动员最佳匹配问题(带权二分图最大匹配)

    Luogu 1559 运动员最佳匹配问题(带权二分图最大匹配) Description 羽毛球队有男女运动员各n人.给定2 个n×n矩阵P和Q.P[i][j]是男运动员i和女运动员j配对组成混合双打的 ...

  5. [HAOI2008]移动玩具(状压&带权二分图)

    题目描述 • 一个 4 × 4 的 0/1 矩阵 • 每次可以交换相邻两个元素 • 求从初始状态到目标状态的最小交换次数 输入格式 前四行,每行一个长为 4 的 0/1 字符串,描述初始状态. 后四行 ...

  6. 运动员最佳匹配问题 KM算法:带权二分图匹配

    题面: 羽毛球队有男女运动员各n人.给定2 个n×n矩阵P和Q.P[i][j]是男运动员i和女运动员j配对组成混合双打的男运动员竞赛优势:Q[i][j]是女运动员i和男运动员j配合的女运动员竞赛优势. ...

  7. POJ 2195 Going Home | 带权二分图匹配

    给个地图有人和房子 保证人==房子,每个人移动到房子处需要花费曼哈顿距离的代价 问让人都住在房子里最小代价 显然是个带权二分图最大匹配 转化成以一个网络,规定w是容量,c是代价 1.S向人连边,w=1 ...

  8. KM(Kuhn-Munkres)算法求带权二分图的最佳匹配

    KM(Kuhn-Munkres)算法求带权二分图的最佳匹配 相关概念 这个算法个人觉得一开始时有点难以理解它的一些概念,特别是新定义出来的,因为不知道是干嘛用的.但是,在了解了算法的执行过程和原理后, ...

  9. 费用流模板(带权二分图匹配)——hdu1533

    /* 带权二分图匹配 用费用流求,增加源点s 和 汇点t */ #include<bits/stdc++.h> using namespace std; #define maxn 1000 ...

  10. hdu5045:带权二分图匹配

    题目大意 : n个人 做m道题,其中 每连续的n道必须由不同的人做 已知第i人做出第j题的概率为pij,求最大期望 思路:考虑每连续的n道题 都要n个人来做,显然想到了带权的二分图匹配 然后就是套模板 ...

随机推荐

  1. Docker网络和容器的通信

    Docker的本地网络实现其实就是利用了Linux上的网络命名空间和虚拟网络设备(特别是veth pair). 基本原理 直观上看,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)与外界 ...

  2. MySQL 8 新特性之自增主键的持久化

    自增主键没有持久化是个比较早的bug,这点从其在官方bug网站的id号也可看出(https://bugs.mysql.com/bug.php?id=199).由Peter Zaitsev(现Perco ...

  3. 微信小程序获取formId时提示"the formId is a mock one"

    微信小程序使用模板消息需要使用表单提交 formId,因此进行了简单的代码测试,在 wxml 文件中创建 form 对象,并在 form 标签中声明属性 report-submit="tru ...

  4. 朱晔的互联网架构实践心得S2E1:业务代码究竟难不难写?

    注意,这是我的架构实践心得的第二季的系列文章,第一季有10篇你也可以回顾. 见https://www.cnblogs.com/lovecindywang/category/1296779.html 最 ...

  5. 未安装Oracle客户端的服务器上,使用ASP.NET远程连接Oracle

    公司服务器一直都是使用 .NET+SQLSERVER的开发方式,有个项目需要进行读取远程Oracle的需求.由于oracle 基本不会,也是一边做一遍摸索. 首先是使用工具测试是否已经联通,因为之前用 ...

  6. vue prop 传递数据

    prop 组件实例的作用域是孤立的.这意味着不能 (也不应该) 在子组件的模板内直接引用父组件的数据.要让子组件使用父组件的数据,需要通过子组件的 props 选项 一个组件默认可以拥有任意数量的 p ...

  7. HDU - 1542 扫描线入门+线段树离散化

    扫描线算法+线段树维护简介: 像这种求面积的并集的题目,就适合用扫描线算法解决,具体来说就是这样 类似这种给出点的矩形的对角的点的坐标,然后求出所有矩形面积的交集的问题,可以采用扫描线算法解决.图如下 ...

  8. IBM的淘汰之路

    BM曾经在计算领域独领风骚,但是90年被PC产业链上的微软.英特尔等厂商围殴,遭遇最严重的危机; 今天在云计算市场,IBM曾在遭遇同样的危机,这一次不知道它能否安然度过; IBM收购红帽转向混合云,是 ...

  9. 简要了解 MySql 5.5/5.6/5.7/8 出现的新特性

    MySQL的开发周期 在比较之前,首先提一下MySQL的开发周期. MySQL一个大版本的开发,大致经历如下几个阶段: Feature Development Feature Testing Perf ...

  10. js根据ip自动获取地址(省市区)

    HTML: <html> <head> <meta charset="utf-8"> <meta name="viewport& ...