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 )的更多相关文章

  1. 奔小康赚大钱 HDU - 2255(最大权值匹配 KM板题)

    奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  2. 奔小康赚大钱 hdu 2255

    奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

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

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

  4. 二分图最大权匹配问题&&KM算法讲解 && HDU 2255 奔小康赚大钱

    作者:logosG 链接:https://www.cnblogs.com/logosG/p/logos.html (讲解的KM算法,特别厉害!!!) KM算法: 现在我们来考虑另外一个问题:如果每个员 ...

  5. 【HDU 2255】奔小康赚大钱 (最佳二分匹配KM算法)

    奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  6. HDU 2255 奔小康赚大钱 (KM算法 模板题)

    奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  7. HDU 2255 ——奔小康赚大钱——————【KM算法裸题】

    奔小康赚大钱 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  8. [ACM] HDU 2255 奔小康赚大钱 (二分图最大权匹配,KM算法)

    奔小康赚大钱 Problem Description 传说在遥远的地方有一个很富裕的村落,有一天,村长决定进行制度改革:又一次分配房子. 这但是一件大事,关系到人民的住房问题啊. 村里共同拥有n间房间 ...

  9. hdu 2255 奔小康赚大钱 (KM)

    奔小康赚大钱Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

随机推荐

  1. GridView与CheckBox完美结合

    版本一:单纯地实现全选和全取消,http://www.cnblogs.com/insus/archive/2009/03/14/1411613.html 版本二:修改选中行的背景颜色,http://w ...

  2. HTTP Proxy Servlet 代理服务使用

    java servlet  代理服务器 1. 使用 maven  依赖 <dependency> <groupId>org.mitre.dsmiley.httpproxy< ...

  3. php和js一起实现倒计时功能

    里获取的php服务端的时间 纯JS是获取客服端时间! <?php //php的时间是以秒算.js的时间以毫秒算 date_default_timezone_set('PRC'); //date_ ...

  4. Python 特殊语法:filter、map、reduce、lambda

    Python内置了一些特殊函数,这些函数很具python特性.可以让代码更加简洁. 可以看例子: 1 filter(function, sequence): str = ['a', 'b','c', ...

  5. [Spring MVC] - InitBinder验证

    Spring MVC使用InitBinder验证: 使用InitBinder做验证的情况一般会在此Controller中提交的数据需要有一些是业务性质的,也即比较复杂的验证情况下才会使用.大部份简单的 ...

  6. HTML5能取代IOS原生应用吗

    介绍 移动应用程序(App)和HTML5都是目前最火的技术,二者之间也有不少重叠之处.在移动设备浏览器里运行的html5的web页面,也可以重新打包成不同平台上运行的app.目前很多浏览器都有很好的跨 ...

  7. 无线路由器WDS简要

    A,B两台无线路由器,B去桥接A.在B中保持A相同的无线信道.在B中关闭DHCP.--A,B两台的SSID和无线安全设置都是独立的,无线安全可同可不同.

  8. SwipeRefreshLayout和RecyclerView滑动冲突的解决

    做了个项目,用了support包里的SwipeRefreshLayout和RecyclerView.两者一起使用有一点点小问题,有时候拉着拉着,列表还没拉玩就出来刷新的图标了,在华为荣耀上尤为明显. ...

  9. std result_of

    #include <type_traits> auto call(const auto& f) -> typename std::result_of<decltype( ...

  10. 22. Surrounded Regions

    Surrounded Regions Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A ...