HDUOJ 2255 奔小康赚大钱

题目链接

Problem Description

传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子。
这可是一件大事,关系到人民的住房问题啊。村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住(如果有老百姓没房子住的话,容易引起不安定因素),每家必须分配到一间房子且只能得到一间房子。
另一方面,村长和另外的村领导希望得到最大的效益,这样村里的机构才会有钱.由于老百姓都比较富裕,他们都能对每一间房子在他们的经济范围内出一定的价格,比如有3间房子,一家老百姓可以对第一间出10万,对第2间出2万,对第3间出20万.(当然是在他们的经济范围内).现在这个问题就是村领导怎样分配房子才能使收入最大.(村民即使有钱购买一间房子但不一定能买到,要看村领导分配的).

Input

输入数据包含多组测试用例,每组数据的第一行输入n,表示房子的数量(也是老百姓家的数量),接下来有n行,每行n个数表示第i个村名对第j间房出的价格(n<=300)。

Output

请对每组数据输出最大的收入值,每组的输出占一行。

Sample Input

2
100 10
15 23

Sample Output

123

二分图最大权完美匹配模板题,套一个 K M KM KM 算法模板即可,AC代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=305;
const int inf=1e8;
int n,w[N][N],lx[N],ly[N],visx[N],visy[N],slack[N],link[N];
bool found(int x){visx[x]=1;for(int y=1;y<=n;y++){if(visy[y]) continue;int t=lx[x]+ly[y]-w[x][y];if(t==0){visy[y]=1;if(link[y]==0 || found(link[y])){link[y]=x;return 1;}}else if(slack[y]>t) slack[y]=t;}return 0;
}void KM(){fill(lx,lx+N,0);fill(ly,ly+N,0);fill(link,link+N,0);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)if(lx[i]<w[i][j]) lx[i]=w[i][j];}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++) slack[j]=inf;while(1){fill(visx,visx+N,0);fill(visy,visy+N,0);if(found(i)) break;int d=inf;for(int k=1;k<=n;k++)if(!visy[k] && d>slack[k]) d=slack[k];for(int k=1;k<=n;k++){if(visx[k]) lx[k]-=d;if(visy[k]) ly[k]+=d;}}}int ans=0;for(int i=1;i<=n;i++)ans+=w[link[i]][i];printf("%d\n",ans);
}int main(){while(~scanf("%d",&n)){fill(w[0],w[0]+N*N,0);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){scanf("%d",&w[i][j]);}}KM();}return 0;
}

HDUOJ 2255 奔小康赚大钱相关推荐

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

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

  2. KM算法 最优匹配(最大权匹配) hdu 2255 奔小康赚大钱 最小权匹配 poj 2195 Going Home

    最大权二分匹配问题就是给二分图的每条边一个权值,选择若干不相交的边,得到的总权值最大.解决这个问题可以用KM算法.理解KM算法需要首先理解"可行顶标"的概念.可行顶标是指关于二分图 ...

  3. HDU 2255 奔小康赚大钱 带权二分图匹配 KM算法

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

  4. hdu 2255 奔小康赚大钱--KM算法模板

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 题意:有N个人跟N个房子,每个人跟房子都有一定的距离,现在要让这N个人全部回到N个房子里面去,要 ...

  5. HDU - 2255 奔小康赚大钱(二分图最大权匹配+KM)

    题目链接:点击查看 题目大意:中文题目,简单来说就是n个人和n个房子最大匹配,需要一一对应并且满足权值和最大 题目分析:二分图的完备匹配,条件完全符合KM算法的局限性,直接套模板即可,后续学习费用流( ...

  6. hdu 2255 奔小康赚大钱 KM算法

    看到这么奇葩的题目名我笑了,后来这么一个裸的KM调了2小时我哭了-- 这是个裸的KM算法,也没什么多说的,主要是注意多组数据时,每次都要把各种数组清空啊,赋值啊什么的,反正比较麻烦.至于为什么调了2小 ...

  7. 二分图最佳匹配 KM算法 Hdu2255奔小康赚大钱 + Poj 3565 Ants

    2014-10-4 更新 在最下面增加了基于邻接表的模板 理论:http://blog.sina.com.cn/s/blog_691ce2b701016reh.html http://philosci ...

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

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

  9. HDUOJ---------2255奔小康赚大钱

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

最新文章

  1. VC++、MFC最好的开源项目
  2. 基于Vue-SSR优化方案归纳总结
  3. 关于类、抽象类和接口的继承关系
  4. Linux基本命令 (一)
  5. SpringBoot时间格式化的5种方法!
  6. 使用so动态链接库g++正确,gcc undefined reference错误
  7. java jsession,JSession
  8. anaconda下载与spyder的报错解决
  9. Java架构师发展之路
  10. Failed installing 'Tomcat9' service
  11. 彩色西装 来一整套·都市周报
  12. 学习笔记-Power-Linux
  13. 金山助手流氓软件-被进程sjk_daemon.exe坑死
  14. 【Spring MVC】Json 前后端合并
  15. 中国医科大学2021年12月《五官科护理学》作业考核试题
  16. 修改电脑qq的聊天背景
  17. linux 文件夹同步备份,SyncToy实现本地文件夹同步备份
  18. 最小生成树之Prim(普里姆)算法
  19. 局域网arp攻击_Window应急响应(五):ARP病毒
  20. iOS全埋点解决方案-手势采集

热门文章

  1. handlebar的一些用法——个人使用总结
  2. 米家扫地机器人重置网络_米家扫地机器人如何重置系统
  3. 采用html模板生成静态网页
  4. 名编辑电子杂志大师教程 | 图层叠放次序
  5. 乐高机器人纲要_机器人校本课程纲要.doc
  6. 【网络安全面经】渗透面经、安服面经、红队面经、hw面经应有尽有 这一篇真的够了
  7. 手机的一些使用技巧分享
  8. 用Python做一个简单的表白小弹窗
  9. kubernetes强制删除namespace
  10. M8软件开发经验总结:移植黄金岛斗地主的经验分享