hdu2255 奔小康赚大钱

2024-05-11 23:48
文章标签 hdu2255 奔小康 赚大钱

本文主要是介绍hdu2255 奔小康赚大钱,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:hdu2255
题目大意:
(额题意是中文的并不是很想打呢)
多组数据
给定一个 n n n,表示有 n n n间房子,也表示有 n n n个人。然后 n n n行每行 n n n个数,第 i i i行表示第 i i i个人对这 n n n间房子给出的价格。问村长应该怎么安排哪个人买哪间房能使他的收入最大。求最大的收入值。

题解:
KM模板题
我都忘光了而已(卑微

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 310
#define inf 0x3f3f3f3fint tim,n;
int visx[maxn],visy[maxn],lx[maxn],ly[maxn];
int d[maxn][maxn],slack[maxn],bf[maxn];
int mymin(int x,int y){return (x<y)?x:y;}
int mymax(int x,int y){return (x>y)?x:y;}
bool ffind(int x)
{visx[x]=tim;for (int y=1;y<=n;y++)if (visy[y]!=tim && lx[x]+ly[y]-d[x][y]==0)//!!!!!!!!!lx[x]+ly[y]-d[x][y]==0{visy[y]=tim;if (bf[y]==-1 || ffind(bf[y])){bf[y]=x;return true;}}else slack[y]=mymin(slack[y],lx[x]+ly[y]-d[x][y]);return false;}
int KM()
{tim=0;int i,j;for (i=1;i<=n;i++)lx[i]=-inf,visx[i]=ly[i]=visy[i]=0,bf[i]=-1;for (i=1;i<=n;i++)for (j=1;j<=n;j++)lx[i]=mymax(lx[i],d[i][j]);for (i=1;i<=n;i++){for (j=1;j<=n;j++) slack[j]=inf;while(1){tim++;if (ffind(i)) break;int delta=inf;for (j=1;j<=n;j++) if (visy[j]!=tim) delta=mymin(delta,slack[j]);for (j=1;j<=n;j++){if (visx[j]==tim) lx[j]-=delta;if (visy[j]==tim) ly[j]+=delta;else slack[j]-=delta;}}}int ret=0;for (i=1;i<=n;i++)if (bf[i]!=-1) ret+=d[bf[i]][i];return ret;
}
int main()
{int i,j;while (cin>>n){memset(d,0,sizeof(d));for (i=1;i<=n;i++)for (j=1;j<=n;j++)scanf("%d",&d[i][j]);printf("%d\n",KM());}return 0;}

这篇关于hdu2255 奔小康赚大钱的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981006

相关文章

赚大钱和赚小钱,哪个更累?

最近一直在质疑我在做的项目,虽然有同行做到了很好的成绩,但是我还是质疑。 因为一直在赚小钱,接触到的也是新手、底层客户、墨迹客户。 越是钱少的生意,越不好做,客户越挑剔。 而且赚小钱会消磨人的心智。 前几年我也做过超高单价的业务,感觉和赚小钱,所消耗的精力是一样的。 赚大钱需要和有钱的客户打交道,无论是思维、话术都会得到碰撞,不仅仅是赚钱,个人能力也在蹭蹭提升。 而且有钱的客户反而更豪

张大哥笔记:普通人赚大钱都靠“运气”

我们都渴望赚大钱,但是否真的需要“运气”呢?对于大多数人而言,“运气”并不仅仅是概率,它似乎有着实质性的影响。就好像在特定的时间,遇到特定的你,然后一击即中! 虽然“运气”听起来有点神秘,我的目的是要将它与赚钱的实际行动结合起来,让它变得具有可操作性。我们将探讨有助于普通人获得“好运气”的重要因素:如何得到贵人相助? 什么是贵人呢?比如你现在处于事业的低谷期,一个意外的机会让你重新东山再起;或

HDU 2255 奔小康赚大钱(KM完美匹配)

HDU 2255 奔小康赚大钱 题目链接 题意:中文题 思路:就是KM的裸题 代码: #include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;const int MAXNODE = 305;typedef int Type;const T

宝妈在家也能赚大钱:7种在家可做的副业兼职推荐

在这个多元化的时代,宝妈们不再满足于仅仅在家中照顾孩子,她们渴望拥有自己的事业和收入。 今天,就让我带你一探究竟,揭秘那些适合宝妈在家做的副业兼职,让你在家也能轻松赚钱! 这几份副业,不仅能让你在家赚钱,还能提升你的职业能力,让你的生活更加精彩! 一、做博主:分享带娃经验,成为自媒体明星 成为自媒体博主,分享你的带娃经验和生活点滴,可以吸引众多粉丝。当账号流量增加时,商家自然会找上

水牛社推荐:2024年在家也能赚大钱的五个副业兼职

今天,我在网络上读到这样一句话,它深深地触动了我:“职场人应时刻保持警惕,创业者则需深思熟虑后再行动”。身处这个日新月异的时代,我对此深有感触。 如今的社会变革速度之快令人咋舌,就连公务员、教师等体制内的稳定职业,也无法保证一辈子的安稳。因此,发展兼职副业成为了年轻人的新潮流。 我,作为一名从副业中成长起来的作者,深知一个靠谱的副业对于个人发展的重要性。曾经,我是一名小学老师,如果我一直安于现

hdu2255

链接:点击打开链接 题意:给一个n*n的矩阵,每个数表示第i个村名对第j间房出的价格,问最后最大价格是多少 代码: #include <iostream>#include <climits> //这个头文件含有int的上限,因此可以调用INT_MAX#include <string.h>

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

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

HDU2255 奔小康赚大钱【二分图 带权最优匹配】

奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 14706    Accepted Submission(s): 6394   Problem Description 传说在遥远的地方有一个非常富裕的村落,有一天,村长

从尤雨溪微博募捐,思考开源如何赚大钱

尤大在他的微博表示,他打算开启国内开源捐赠计划,截止本文发帖为止,已经有 6k / 月的固定充电了。 这个数额目前还是比较小的,企业级别的 sponsor 应该还没有出现,光靠个人捐赠的话这点钱真的完全不够团队开销的。   正巧我看到了 Ink 作者的一篇文章,讲述他在开源软件如何稳定搞钱这方面的思考,觉得他的很多观点非常犀利,值得各位前端开发者同学一起学习,毕竟大家未来可能有搞开源

HDU 2255 奔小康赚大钱 (二分图:KM算法)

题意: 中文题不解释 要点: KM算法是求完备匹配下的最大权匹配: 在一个二分图内,左顶点为X,右顶点为Y,现对于每组左右连接X[i]Y[j]有权w[i][j],求一种匹配使得所有w[i][j]的和最大。注意完备匹配定义:|X|=|Y|=匹配数。这算法还是比较难的,证明我还是半懂不懂的,具体流程还是可以的。基本上就是利用增广路,不断修改点标,找可行边什么的。 参考博客:点击打开链接 这题