题意:说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子。
这可是一件大事,关系到人民的住房问题啊。村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住(如果有老百姓没房子住的话,容易引起不安定因素),每家必须分配到一间房子且只能得到一间房子。

一方面,村长和另外的村领导希望得到最大的效益,这样村里的机构才会有钱.由于老百姓都比较富裕,他们都能对每一间房子在他们的经济范围内出一定的价格,
比如有3间房子,一家老百姓可以对第一间出10万,对第2间出2万,对第3间出20万.(当然是在他们的经济范围内).现在这个问题就是村领导怎样分配房
子才能使收入最大.(村民即使有钱购买一间房子但不一定能买到,要看村领导分配的).

kuangbin模板题

 #include <stdio.h>
#include <algorithm>
#include <string.h>
#include <iostream>
using namespace std; /* KM算法
* 复杂度O(nx*nx*ny)
* 求最大权匹配
* 若求最小权匹配,可将权值取相反数,结果取相反数
* 点的编号从0开始
*/
const int N = ;
const int INF = 0x3f3f3f3f;
int nx,ny;//两边的点数
int g[N][N];//二分图描述
int linker[N],lx[N],ly[N];//y中各点匹配状态,x,y中的点标号
int slack[N];
bool visx[N],visy[N]; bool DFS(int x)
{
visx[x] = true;
for(int y = ; y < ny; y++)
{
if(visy[y])continue;
int tmp = lx[x] + ly[y] - g[x][y];
if(tmp == )
{
visy[y] = true;
if(linker[y] == - || DFS(linker[y]))
{
linker[y] = x;
return true;
}
}
else if(slack[y] > tmp)
slack[y] = tmp;
}
return false;
}
int KM()
{
memset(linker,-,sizeof(linker));
memset(ly,,sizeof(ly));
for(int i = ;i < nx;i++)
{
lx[i] = -INF;
for(int j = ;j < ny;j++)
if(g[i][j] > lx[i])
lx[i] = g[i][j];
}
for(int x = ;x < nx;x++)
{
for(int i = ;i < ny;i++)
slack[i] = INF;
while(true)
{
memset(visx,false,sizeof(visx));
memset(visy,false,sizeof(visy));
if(DFS(x))break;
int d = INF;
for(int i = ;i < ny;i++)
if(!visy[i] && d > slack[i])
d = slack[i];
for(int i = ;i < nx;i++)
if(visx[i])
lx[i] -= d;
for(int i = ;i < ny;i++)
{
if(visy[i])ly[i] += d;
else slack[i] -= d;
}
}
}
int res = ;
for(int i = ;i < ny;i++)
if(linker[i] != -)
res += g[linker[i]][i];
return res;
}
//HDU 2255
int main()
{
int n;
while(scanf("%d",&n) == )
{
for(int i = ;i < n;i++)
for(int j = ;j < n;j++)
scanf("%d",&g[i][j]);
nx = ny = n;
printf("%d\n",KM());
}
return ;
}

最新文章

  1. web系统架构设计中需要知道的点(前端篇)
  2. cmd 打开gitshell
  3. 借助fastjson 实体对象转map
  4. UVa10023手动开大数平方算法
  5. VB datagrid指定行着色
  6. 剑指 offer set 2 从头到尾打印链表
  7. Azure HDInsight与Hadoop周边系统集成
  8. 浅析Linux操作系统工作的基础
  9. 【Android开源项目分析】android轻量级开源缓存框架——ASimpleCache(ACache)源代码分析
  10. word2vec 中的数学原理具体解释(四)基于 Hierarchical Softmax 的模型
  11. windows下 nginx php 环境搭建
  12. 对await(),notify()的理解
  13. Spring-boot:快速搭建微服务框架
  14. 取代 FlashP2P,H5P2P 将成为 WebP2P 主流
  15. Luogu5283 十二省联考2019异或粽子(trie/可持久化trie+堆)
  16. 剑指Offer_编程题_11
  17. SpringBoot使用Mybatis-PageHelper
  18. 实习培训——Java基础(4)
  19. Codeforces805 C. Find Amir 2017-05-05 08:41 140人阅读 评论(0) 收藏
  20. vue-devtools必备工具

热门文章

  1. Canvas与Image互转
  2. C# ManualResetEvent的使用
  3. 滑动菜单栏(一)开源项目SlidingMenu的使用
  4. 第16章 使用Squid部署代理缓存服务
  5. L4 如何在XCode中下进行工作
  6. Xcode 5.0.2 下载地址
  7. sqlmap如何修改线程
  8. OpenCV的基本数据结构
  9. 【GoLang】GoLang fmt 占位符详解
  10. sharepoint bcs (bussiness connectivity services)