LA 3989 - Ladies' Choice 稳定婚姻问题
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1990
题目大意:
在盛大的校园舞会上有n位男生和n位女生,每人都对每个异性有一个排序,代表对他们的喜欢程度。你的任务是将男生和女生一一配对,使得男生U和女生V不存在一下情况1.男生u和女生v不是舞伴2,他们喜欢对方的程度都大于各自当前舞伴的程度。如果出现了2中的情况,他们可能擅自抛下自己的舞伴,另外组成一对。
你的任务是对于每个女生,在所有可能和她跳舞的男生中,找出她最喜欢的那一个。
思路:
看图。。。。
刘汝佳书上的原题。。划线的部分我只是想表明这个算法的。。。。丧失。。。。
稳定婚姻问题,求婚拒绝算法的实现。。。我觉得我也丧心病狂了。。。。。。情人节就是要做这种。。。。。
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
const int MAXN=1000+10;
int future_wife[MAXN],future_husband[MAXN];
int order_man[MAXN][MAXN],order_woman[MAXN][MAXN],next_persue[MAXN];
queue<int> q; //为订婚男士排队中。。。
void engage(int man,int woman) //订婚
{int getout=future_husband[woman]; //这个可怜的男人被抛弃了。当然可能为0,就是没有这个人if(getout!=0){q.push(getout); //兄弟,你得重新找别人了。。future_wife[getout]=0; //抛弃现任未婚夫}future_husband[woman]=man;future_wife[man]=woman;
}
int main()
{int T;scanf("%d",&T);while(T--){ while(!q.empty())q.pop();int n;scanf("%d",&n);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)scanf("%d",&order_man[i][j]); //编号为i的男士第j个喜欢的人。future_wife[i]=0; //接下来应该向排名为1的女士求婚。next_persue[i]=1; //没有未婚妻。q.push(i);}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){int temp;scanf("%d",&temp);order_woman[i][temp]=j; //在编号为i的女士心目中,编号为temp的男士排名}future_husband[i]=0; //没有未婚夫}while(!q.empty()){int man=q.front(); //该这个男的求婚了!q.pop();int woman=order_man[man][next_persue[man]++]; //下一个求婚对象if(future_husband[woman]==0) //如果女士没有对象,直接订婚engage(man,woman);else if(order_woman[woman][man]<order_woman[woman][ future_husband[woman] ])engage(man,woman); //由于好感度高于现在女士的未婚夫,所以抢亲成功。else q.push(man); //直接被拒绝,下次再来。}for(int i=1;i<=n;i++) printf("%d\n",future_wife[i]);if(T) printf("\n");}return 0;
}
转载于:https://www.cnblogs.com/murmured/p/5004086.html
LA 3989 - Ladies' Choice 稳定婚姻问题相关推荐
- 【BZOJ2140】稳定婚姻 Tarjan
[BZOJ2140]稳定婚姻 Description 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有关. ...
- hdu1435 稳定婚姻问题
题意: Stable Match Special Judge Problem Description Network 公司的BOSS 说现在他们公司建立的信号发射站和接收站经常出现信号发送接收不稳定的 ...
- hdu1914 稳定婚姻问题
稳定婚姻问题就是给你n个男的,n个女的,然后给你每个男生中女生的排名,和女生心目中男生的排名,然后让你匹配成n对,使婚姻稳定,假如a和b匹配,c和d匹配,如果a认为d比b好,同时 ...
- 稳定婚姻问题(自己的总结)
稳定婚姻问题就是给你n个男的,n个女的,然后给你每个男生中女生的排名,和女生心目中男生的排名,然后让你匹配成n对,使婚姻稳定,假如a和b匹配,c和d匹配,如果a认为d比b好,同时d也认为a比 ...
- 稳定匹配问题——稳定婚姻算法设计
图片源自:美剧<How I met your mother> **** 本代码带有详细的注释,并在控制台输出时详细地说明了算法的过程,非常有助于新手理解稳定匹配问题和稳定婚姻算法的设计思路 ...
- 稳定婚姻问题:Gale–Shapley算法
(一)问题的引出 在组合数学.经济学.计算机科学中,稳定婚姻问题(英语:stable marriage problem,简称SMP)又称为稳定配对问题(stable matching problem) ...
- 【文末福利】图论算法:稳定婚姻问题,如何找到最适合自己的另一半
什么是算法? >>>> 每当有人问我这样的问题,我总会引用下面这个例子. 假如你是一个媒人,有若干名单身男子登门求助,还有同样多的单身 女子也来征婚.如果你已经知道这些女孩儿在 ...
- 图论 —— 稳定婚姻问题与延迟认可算法
[稳定婚姻问题] 1.集合 M 表示 n 个男性 2.集合 F 表示 n 个女性 3.对于每个人我们都按异性的中意程度给出一份名单(从最中意的到最不中意的) 如果没有 ,f 对 m 比对她的配偶中意的 ...
- hdu - 1435 Stable Match 稳定婚姻问题、Gale-Shapley算法模板
稳定婚姻的描述: 假如你是一个媒人,有若干个单身男子登门求助,还有同样多的单身女子也前来征婚.如果你已经知道这些女孩儿在每个男孩儿心目中的排名,以及男孩儿们在每个女孩儿心中的排名,你应该怎样为他们牵线 ...
最新文章
- 吴恩达:关于机器学习职业生涯以及阅读论文的一些建议
- poj1651(矩阵连乘)
- 这样的烂代码,我实习的时候都写不出来!
- 【玩转.Net MF – 03】远程文件查看器
- jQuery基础之(一)jQuery概述
- codesys raspberry pi_11月7日|Pi第四次减产来袭?4点浅析中文区用户关心的问题
- Windows Mobile 模拟器网络连接设置
- 启动报错:Error creating bean with name ‘XXX’ defined in...
- 11.深入分布式缓存:从原理到实践 --- Aerospike原理及广告业务应用
- web前端顶岗实习总结报告_实习报告-web前端实习报告范文三篇 精品
- 微信任意用户密码修改漏洞分析
- 使用Unity3D编写ARPG游戏——角色属性的定义与实现(一)
- 麦客达温德姆酒店品牌在中国首次亮相
- SV绿皮书笔记(九)暂时完结
- 数据类型的基本功能(一)
- js 对象解构 默认值 重命名
- 正数的平均值(调用函数)
- IP地址和MAC 地址
- 地天泰 (易經大意 韓長庚)
- CodeForces 332B Maximum Absurdity(线段树单点更新)