Stable Match
稳定婚姻问题
主要就是处理两个数组
boy[i][j] 存放第i个男的第j喜欢的女的 存的是女的编号!!
girl[i][j] 存放 第i个女的对第j个男的的好感度 存的是值
然后只要模板就行了
这题的数据处理有点麻烦 多学习!
#include<bits/stdc++.h>
using namespace std;
#define N 1000
int rank1[N];
int match_boy[N],match_girl[N];
double boy[N][N],girl[N][N];
int n; struct node
{
int cap,idx;
double x,y,z;
}lau[N],acc[N]; struct ode
{
int idx,cap;
double len;
}aim[N]; bool cmp(ode a,ode b)
{
if( fabs(a.len-b.len)<0.000001 )return a.cap>b.cap;
else return a.len<b.len;
} int main()
{
int cas;cin>>cas;
while(cas--)
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d %d %lf %lf %lf",&lau[i].idx,&lau[i].cap,&lau[i].x,&lau[i].y,&lau[i].z);
for(int i=;i<=n;i++)
scanf("%d %d %lf %lf %lf",&acc[i].idx,&acc[i].cap,&acc[i].x,&acc[i].y,&acc[i].z); for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
aim[j].len = sqrt((lau[i].x-acc[j].x)*(lau[i].x-acc[j].x) + (lau[i].y-acc[j].y)*(lau[i].y-acc[j].y) + (lau[i].z-acc[j].z)*(lau[i].z-acc[j].z));
aim[j].cap = acc[j].cap;
aim[j].idx = acc[j].idx;
} sort(aim+,aim++n,cmp);//求第i个男的对所有的女的好感排序 for(int j=;j<=n;j++)
boy[i][j]=aim[j].idx;//放置第i个男的第j喜欢的女的是谁! } for(int i=;i<=n;i++)
{ for(int j=;j<=n;j++)
{
aim[j].len = sqrt((acc[i].x-lau[j].x)*(acc[i].x-lau[j].x) + (acc[i].y-lau[j].y)*(acc[i].y-lau[j].y) + (acc[i].z-lau[j].z)*(acc[i].z-lau[j].z));
aim[j].cap = lau[j].cap;
aim[j].idx = lau[j].idx;
}
sort(aim+,aim++n,cmp);
for(int j=;j<=n;j++)
girl[ acc[i].idx ][ aim[j].idx ]=n-j;//放置第i个女的对第j个男的的好感度! 不需要放len 直接n-j就行
} //处理好boy和girl数组 其他的完全一样! int flag=;
memset(match_boy,,sizeof match_boy);
memset(match_girl,,sizeof match_girl);
memset(rank1,,sizeof rank1); while(flag)
{
flag=;
for(int i=;i<=n;i++)
{
if(!match_boy[i])
{
int temp=boy[i][rank1[i]++];
if(!match_girl[temp])
match_boy[i]=temp,match_girl[temp]=i;
else if( girl[temp][i]>girl[temp][match_girl[temp]] )
{
match_boy[ match_girl[temp] ]=;
match_boy[i]=temp;
match_girl[temp]=i;
}
flag=;
}
}
} for(int i=;i<=n;i++)
cout<<i<<' '<<match_boy[i]<<endl;
cout<<endl;
}
return ;
}
Stable Match的更多相关文章
- 【稳定婚姻问题】【HDU1435】【Stable Match】
2015/7/1 19:48 题意:给一个带权二分图 求稳定匹配 稳定的意义是对于某2个匹配,比如,( a ---- 1) ,(b----2) , 如果 (a,2)<(a,1) 且(2,a)& ...
- HDU 1435 Stable Match 【稳定婚姻问题】
<题目链接> 题目大意:给你n个发射站和n个接受站的位置,并且给出他们的容量,现在需要你对这n对站台进行匹配,距离越近的站台越稳定,如果两个站台距离相等,容量越大的越稳定.问你稳定匹配是什 ...
- hdoj1435 Stable Match(稳定婚姻问题)
简单稳定婚姻问题. 题目描述不够全面,当距离相同时容量大的优先选择. 稳定婚姻问题不存在无解情况. #include<iostream> #include<cstring> # ...
- Stable Matching (Gale Sharpley Algorithm)
稳定婚配问题:n个男生n个女生.当中每一个人都有自己心仪的列表. 问怎样达成稳定的匹配(比方, b想B求婚,可是B已有的对象的优先级高于b,此时b的魅力不足以拆散B所处的那一对,即达到稳定状态.) ( ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- 【HDOJ图论题集】【转】
=============================以下是最小生成树+并查集====================================== [HDU] How Many Table ...
- hdu图论题目分类
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
- 最大团&稳定婚姻系列
[HDU] 1530 Maximum Clique 1435 Stable Match 3585 maximum shortest distance 二分+最大团 1522 Marriage is ...
- HDU图论题单
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
随机推荐
- 20个令人惊叹的深度学习应用(Demo+Paper+Code)
20个令人惊叹的深度学习应用(Demo+Paper+Code) 从计算机视觉到自然语言处理,在过去的几年里,深度学习技术被应用到了数以百计的实际问题中.诸多案例也已经证明,深度学习能让工作比之前做得更 ...
- 洛谷P1155 双栈排序
这题什么毒瘤......之前看一直没思路,然后心说写个暴搜看能有多少分,然后就A了??! 题意:给你一个n排列,求它们能不能通过双栈来完成排序.如果能输出最小字典序方案. [update]这里面加了一 ...
- 【CF61D】Eternal Victory
题目大意:给定一棵 N 个节点的树,求从 1 号节点(根节点)出发,任意节点结束,且至少经过每个节点一次的最短路径是多少. 题解:首先考虑最终要回到根节点的情况,可以发现最短路径长度一定等于该树边权的 ...
- Build CRUD Application with jQuery EasyUI
http://www.jeasyui.com/tutorial/app/crud.php It has become a common necessily for web application to ...
- spring的controller默认是单例还是多例
转: spring的controller默认是单例还是多例 先看看spring的bean作用域有几种,分别有啥不同. spring bean作用域有以下5个: singleton:单例模式,当spri ...
- 转头条:阿里p7架构师:三年经验应该具备什么样的技能?
问:工作中,有时候实现一个功能,会去看有没有现成的轮子可用.对于重复造轮子与改造轮子有什么看法? 答:一定会的,其实这也是一个提高技术能力的方法,比如今天想做个日期转换的功能,JDK8有日期的新特性就 ...
- POJ - 3020 Antenna Placement(最小覆盖路径)
---恢复内容开始--- https://vjudge.net/problem/POJ-3020 题意 *--代表城市,o--代表空地 给城市安装无线网,一个无线网最多可以覆盖两座城市,问覆盖所有城市 ...
- bzoj千题计划236:bzoj2300: [HAOI2011]防线修建
http://www.lydsy.com/JudgeOnline/problem.php?id=2300 维护动态凸包,人懒用的set 用叉积判断,不要用斜率 #include<set> ...
- jQuery1.11源码分析(3)-----Sizzle源码中的浏览器兼容性检测和处理[原创]
上一章讲了正则表达式,这一章继续我们的前菜,浏览器兼容性处理. 先介绍一个简单的沙盒测试函数. /** * Support testing using an element * @param {Fun ...
- 一组数字,从1到n,从中减少了3个数,顺序打乱,放在n-3的数组里,找出丢失数字
曾经看到有这样一个JS题:有一组数字,从1到n,从中减少了3个数,顺序也被打乱,放在一个n-3的数组里请找出丢失的数字,最好能有程序,最好算法比较快假设n=10000 下面我也来贴一个算法. func ...