LA 3989 - Ladies' Choice 稳定婚姻问题
题目大意:
在盛大的校园舞会上有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;
}
LA 3989 - Ladies' Choice 稳定婚姻问题的更多相关文章
- UVA 1175 Ladies' Choice 稳定婚姻问题
题目链接: 题目 Ladies' Choice Time Limit: 6000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu 问题 ...
- UVALive3989 Ladies' Choice —— 稳定婚姻问题 Gale - Shapely算法
题目链接:https://vjudge.net/problem/UVALive-3989 题解: 题意:有n个男生和n个女生.每个女生对男神都有个好感度排行,同时每个男生对每个女生也有一个好感度排行. ...
- UVALive 3989 Ladies' Choice
Ladies' Choice Time Limit: 6000ms Memory Limit: 131072KB This problem will be judged on UVALive. Ori ...
- UVALive 3989 Ladies' Choice(稳定婚姻问题:稳定匹配、合作博弈)
题意:男女各n人,进行婚配,对于每个人来说,所有异性都存在优先次序,即最喜欢某人,其次喜欢某人...输出一个稳定婚配方案.所谓稳定,就是指未结婚的一对异性,彼此喜欢对方的程度都胜过自己的另一半,那么这 ...
- UVALive 3989Ladies' Choice(稳定婚姻问题)
题目链接 题意:n个男生和女生,先是n行n个数,表示每一个女生对男生的好感值排序,然后是n行n列式每一个男生的好感值排序,输出N行,即每个女生在最好情况下的男生的编号 分析:如果是求女生的最好情况下, ...
- UVALive 3989 Ladies' Choice
经典的稳定婚姻匹配问题 UVALive - 3989 Ladies' Choice Time Limit: 6000MS Memory Limit: Unknown 64bit IO Format: ...
- Ladies' Choice UVALive - 3989 稳定婚姻问题 gale_shapley算法
/** 题目: Ladies' Choice UVALive - 3989 链接:https://vjudge.net/problem/UVALive-3989 题意:稳定婚姻问题 思路: gale_ ...
- 【UVAlive 3989】 Ladies' Choice (稳定婚姻问题)
Ladies' Choice Teenagers from the local high school have asked you to help them with the organizatio ...
- UVALive-3989 Ladies' Choice (稳定婚姻问题)
题目大意:稳定婚姻问题.... 题目分析:模板题. 代码如下: # include<iostream> # include<cstdio> # include<queue ...
随机推荐
- Java并发包之Semaphore用法
多线程中的同步概念就是排着队去执行一个任务,执行任务的是一个一个的执行,并不能并行执行,这样的优点是有助于程序逻辑的正确性,不会出现线程安全问题,保证软件的系统功能上的运行稳定性, Semaphore ...
- 洛谷——P1518 两只塔姆沃斯牛 The Tamworth Two
https://www.luogu.org/problem/show?pid=1518 题目背景 题目描述 两只牛逃跑到了森林里.农夫John开始用他的专家技术追捕这两头牛.你的任务是模拟他们的行为( ...
- [Javascript] Compose multiple functions for new behavior in JavaScript
In this lesson you will create a utility function that allows you to quickly compose behavior of mul ...
- easyui datagird 总计栏
在使用easyui 的表格的时.非常多时候须要加一个总计栏,当然easyui中有加总计栏的方法,写一个footer就好,然而我认为这样的方法并不好.由于加入的总计栏是和列表每一个单元格相应的,有长度限 ...
- Ajax缓存原理
一.什么是Ajax缓存原理? Ajax在发送的数据成功后,会把请求的URL和返回的响应结果保存在缓存内,当下一次调用Ajax发送相同的请求时,它会直接从缓存中把数据取出来,这是为了提高页面的响应速度和 ...
- 【深入篇】Android常用布局方式简介
LinearLayout 线性布局是程序中最常见的布局方式.一般分为水平线性布局和竖直线性布局,通过android.orientation属性可以设置线性布局的方向. 在布局中操作颜色时,要用的是十六 ...
- buffer--cache 详解
- NB大了,增强现实走进安防行业了!竟然还有智能家居的规划!
增强现实系统故事性功能解说 作者:李欢 工号:2288 电话:18938902295 邮箱:lihuan@gosuncn.com 前言: 本文仅适用于2014北京安防展,增强现实展区人员学 ...
- HDU 3487(Play with Chain-Splay)[template:Splay]
Play with Chain Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- js38---门面模式
(function(){ //门面 function addEvebtFacade(el,type,fn){ if(window.addEventListener){ //使用与火狐浏览器 alert ...