1.题意:男女配对,完成配对.要求最高的不满意度最小.
分析:一定存在完美匹配.
2,解决:n男,n女
low,high对应不满意度的下限和上限,利用二分法.
条件:匹配数为n.
3,实现代码:
#include <iostream>
using namespace std;
const int MAXN=1001;
int disp[MAXN][MAXN];//保存不满意度
int mage[MAXN];
int mheight[MAXN];
int wage[MAXN];
int wheight[MAXN];
int sy[MAXN];//记录y是否已经成为别人的匹配
int cx[MAXN],cy[MAXN];//记录各自的匹配对象
int g[MAXN][MAXN];//记录是否可以构成匹配
int n;//配对个数
void buildgraph(int dis)
{
memset(g,0,sizeof(g));
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
g[i][j]=(disp[i][j]<=dis? 1:0);
}
int path(int u)//从u出发,找到一个新的匹配
{
for(int v=1;v<=n;v++)
{
if(g[u][v]&&!sy[v])
{
sy[v]=1;
if(!cy[v]||path(cy[v]))//给v原来的匹配寻找匹配
{
cx[u]=v;
cy[v]=u;
return 1;
}
}
}
return 0;
}
int maxmatch()
{
int temp=0;
memset(cx,0,sizeof(cx));
memset(cy,0,sizeof(cy));
for(int i=1;i<=n;i++)
{
if(!cx[i])
{
memset(sy,0,sizeof(sy));
temp+=path(i);
}
}
return temp;
}
int main()
{
freopen("3.1.in","r",stdin);
int ans;
while(cin>>n,n)
{
ans=0;
for(int i=1;i<=n;i++)
cin>>mheight[i]>>mage[i];
for(int i=1;i<=n;i++)
cin>>wheight[i]>>wage[i];
int low=100000000;
int high=0;
int p,q;
//得到不满意度的最大和最小值.
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
p=mheight[i]-wheight[j];
q=mage[i]-wage[j];
disp[i][j]=p*p+q*q;
if(low>disp[i][j]) low=disp[i][j];
if(high<disp[i][j]) high=disp[i][j];
}
while(low<=high)
{
int mid=(low+high)/2;
buildgraph(mid);
int ret=maxmatch();
if(ret==n)
{
ans=mid;
high=mid-1;
}
else
low=mid+1;
}
cout<<ans<<endl;
}
return 0;
}
分享到:
相关推荐
国际大学生程序设计竞赛例题解.三:图论、动态规划算法、综合题专集
本系列丛书包括《ACM国际大学生程序设计竞赛:知识与入门》、《ACM国际大学生程序设计竞赛:算法与实现》、《ACM国际大学生程序设计竞赛:题目与解读》、《ACM国际大学生程序设计竞赛:比赛与思考》等4册,其中《ACM...
国际大学生程序设计竞赛例题解(六) 广东省大学生程序设计竞赛例题解析
第二本:国际大学生程序设计竞赛例题解 2 广东省大学生程序设计竞赛试题 2003-2005年 第三本:国际大学生程序设计竞赛例题解 3 图论·动态规划算法·综合题专集 第四本:国际大学生程序设计竞赛例题解 4 广东省...
此资源压缩包分为两卷,此卷为part1。 《ACM国际大学生程序设计竞赛:题目与解读》讲述了ACM国际大学生程序设计竞赛(ACM—...《ACM国际大学生程序设计竞赛:题目与解读》为各类算法配备经典例题及题库,并提供解题思路。
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
国际大学生程序设计竞赛例题解二,分享给大家!
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
国际大学生程序设计竞赛例题解.一:数论、计算几何、搜索算法专集.
国际大学生程序设计竞赛例题解 广东省大学生程序设计竞赛试题,搞ACM,信息学竞赛的同学都用得着!
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
为了帮助高等院校的大学生们备战国际大学生程序设计竞赛,帮助他们提高程序设计水平和培养更强的分析问题和解决问题的能力,我们编写了这本辅导教材。本书所用的语言是Pascal(Delphi)。全书共分六章,第1章先介绍...
中国大学生数学建模竞赛题解_matlab
此资源压缩包分为两卷,此卷为part2。 《ACM国际大学生程序设计竞赛:题目与解读》讲述了ACM国际大学生程序设计竞赛(ACM—...《ACM国际大学生程序设计竞赛:题目与解读》为各类算法配备经典例题及题库,并提供解题思路。
国际大学生程序设计竞赛(ACM)例题解析合集八本1-8,设计到各类算法的方方面面,包括动态规划、图论、搜索算法等。对于做算法开发的程序员很有参考意义。 附件为百度网盘永久链接地址。
国际大学生程序设计竞赛例题解 6 广东省大学生程序设计竞赛试题解 2008-2009年 郭嵩山 电子工业出版社
国际大学生程序设计竞赛例题解赛试题(一)