奔小康赚大钱 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 ...
随机推荐
- GridView与CheckBox完美结合
版本一:单纯地实现全选和全取消,http://www.cnblogs.com/insus/archive/2009/03/14/1411613.html 版本二:修改选中行的背景颜色,http://w ...
- HTTP Proxy Servlet 代理服务使用
java servlet 代理服务器 1. 使用 maven 依赖 <dependency> <groupId>org.mitre.dsmiley.httpproxy< ...
- php和js一起实现倒计时功能
里获取的php服务端的时间 纯JS是获取客服端时间! <?php //php的时间是以秒算.js的时间以毫秒算 date_default_timezone_set('PRC'); //date_ ...
- Python 特殊语法:filter、map、reduce、lambda
Python内置了一些特殊函数,这些函数很具python特性.可以让代码更加简洁. 可以看例子: 1 filter(function, sequence): str = ['a', 'b','c', ...
- [Spring MVC] - InitBinder验证
Spring MVC使用InitBinder验证: 使用InitBinder做验证的情况一般会在此Controller中提交的数据需要有一些是业务性质的,也即比较复杂的验证情况下才会使用.大部份简单的 ...
- HTML5能取代IOS原生应用吗
介绍 移动应用程序(App)和HTML5都是目前最火的技术,二者之间也有不少重叠之处.在移动设备浏览器里运行的html5的web页面,也可以重新打包成不同平台上运行的app.目前很多浏览器都有很好的跨 ...
- 无线路由器WDS简要
A,B两台无线路由器,B去桥接A.在B中保持A相同的无线信道.在B中关闭DHCP.--A,B两台的SSID和无线安全设置都是独立的,无线安全可同可不同.
- SwipeRefreshLayout和RecyclerView滑动冲突的解决
做了个项目,用了support包里的SwipeRefreshLayout和RecyclerView.两者一起使用有一点点小问题,有时候拉着拉着,列表还没拉玩就出来刷新的图标了,在华为荣耀上尤为明显. ...
- std result_of
#include <type_traits> auto call(const auto& f) -> typename std::result_of<decltype( ...
- 22. Surrounded Regions
Surrounded Regions Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A ...