UVA 1175 Ladies' Choice 稳定婚姻问题
题目链接:
题目
Ladies' Choice
Time Limit: 6000MS
Memory Limit: Unknown
64bit IO Format: %lld & %llu
问题描述
Teenagers from the local high school have asked you to help them with the organization of next year’s
Prom. The idea is to find a suitable date for everyone in the class in a fair and civilized way. So,
they have organized a web site where all students, boys and girls, state their preferences among the
class members, by ordering all the possible candidates. Your mission is to keep everyone as happy as
possible. Assume that there are equal numbers of boys and girls.
Given a set of preferences, set up the blind dates such that there are no other two people of opposite
sex who would both rather have each other than their current partners. Since it was decided that the
Prom was Ladies’ Choice, we want to produce the best possible choice for the girls.
输入
Input consists of multiple test cases the first line of the input contains the number of test cases.
There is a blank line before each dataset.
The input for each dataset consists of a positive integer N, not greater than 1,000, indicating the
number of couples in theclass. Next, there are N lines, each onecontaining the all the integers from 1
to N,ordered according to the girl’s preferences. Next, there are N lines, each one containing all the
integers from 1 to N, ordered according to the boy’s preferences.
输出
The output for each dataset consists of a sequence of N lines, where the i-th line containsthe number
of the boy assigned to the i-th girl (from 1 to N).
Print a blank line between datasets.
样例
input
1
5
1 2 3 5 4
5 2 4 3 1
3 5 1 2 4
3 4 2 1 5
4 5 1 2 3
2 5 4 1 3
3 2 4 1 5
1 2 4 3 5
4 1 2 5 3
5 3 2 4 1
output
1
2
5
3
4
题意
男生女生一一配对且男生u和女生v不存在以下情况:
- 男生u和女生v不是舞伴;
- 他们喜欢对方的程度都大于各自当前舞伴的程度。
现在要求对每一个女生,在所有可能和她跳舞的男生中,找出她最喜欢的那个。
题解
裸的稳定婚姻问题。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int maxn = 1111;
int pre[maxn][maxn], order[maxn][maxn], ne[maxn];
int future_husband[maxn], future_wife[maxn];
queue<int> Q;
int n;
void engage(int man, int woman) {
int m = future_husband[woman];
if (m) {
future_wife[m] = 0;
Q.push(m);
}
future_wife[man] = woman;
future_husband[woman] = man;
}
void init() {
while (!Q.empty()) Q.pop();
memset(future_husband, 0, sizeof(future_husband));
memset(future_wife, 0, sizeof(future_wife));
memset(ne, 0, sizeof(ne));
}
int main() {
int tc;
scanf("%d", &tc);
while (tc--) {
scanf("%d", &n);
init();
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
scanf("%d", &pre[i][j]);
}
Q.push(i);
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
int x; scanf("%d", &x);
order[i][x] = j;
}
}
while (!Q.empty()) {
int man = Q.front(); Q.pop();
int woman = pre[man][++ne[man]];
if (!future_husband[woman] || order[woman][man]<order[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 (tc) printf("\n");
}
return 0;
}
UVA 1175 Ladies' Choice 稳定婚姻问题的更多相关文章
- UVA 1175 - Ladies' Choice
1175 - Ladies' Choice 链接 稳定婚姻问题. 代码: #include<bits/stdc++.h> using namespace std; typedef long ...
- LA 3989 - Ladies' Choice 稳定婚姻问题
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- UVA 1175 Ladies' Choice 女士的选择(稳定婚姻问题,GS算法)
题意: 给出每个男的心目中的女神排序,给出每个女的心目中的男神排序,即两个n*n的矩阵,一旦任意两个非舞伴的男女同学觉得对方都比现任舞伴要好,他们就会抛弃舞伴而在一起.为了杜绝这种现象,求每个男的最后 ...
- UVALive3989 Ladies' Choice —— 稳定婚姻问题 Gale - Shapely算法
题目链接:https://vjudge.net/problem/UVALive-3989 题解: 题意:有n个男生和n个女生.每个女生对男神都有个好感度排行,同时每个男生对每个女生也有一个好感度排行. ...
- UVALive 3989Ladies' Choice(稳定婚姻问题)
题目链接 题意:n个男生和女生,先是n行n个数,表示每一个女生对男生的好感值排序,然后是n行n列式每一个男生的好感值排序,输出N行,即每个女生在最好情况下的男生的编号 分析:如果是求女生的最好情况下, ...
- 【UVAlive 3989】 Ladies' Choice (稳定婚姻问题)
Ladies' Choice Teenagers from the local high school have asked you to help them with the organizatio ...
- Ladies' Choice UVALive - 3989 稳定婚姻问题 gale_shapley算法
/** 题目: Ladies' Choice UVALive - 3989 链接:https://vjudge.net/problem/UVALive-3989 题意:稳定婚姻问题 思路: gale_ ...
- UVALive-3989 Ladies' Choice (稳定婚姻问题)
题目大意:稳定婚姻问题.... 题目分析:模板题. 代码如下: # include<iostream> # include<cstdio> # include<queue ...
- 训练指南 UVALive - 3989(稳定婚姻问题)
ayout: post title: 训练指南 UVALive - 3989(稳定婚姻问题) author: "luowentaoaa" catalog: true mathjax ...
随机推荐
- ASP.NET Ajax核心对象
本章学习目标 主要掌握AJAX的基本概念和实现机制,学习并创建XMLHttpRequest对象,使用XMLHttpRequestObject对象获取服务器端的数据 主要内容如下,请点击ASP.NET ...
- spark写入Oracle 报错 java.lang.ArrayIndexOutOfBoundsException: -32423
原因: oracle 10g的驱动执行的批量提交只支持32768个参数,如果表的字段多于32个,就会出现该异常 解决办法: 升级oracle的驱动版本,换成ojdbc6.jar
- 苹果系统开发中的混合编程(2):Swift和C的相互调用
在进行Swift和C之间的相互调用时,有必要先了解一下两种语言之间的类型转换关系: C 类型 Swift 类型 bool CBool char, signed char CChar unsig ...
- 【学习笔记】【C语言】自增自减
1. 简单使用 ++ 自增运算符.如a++,++a,都等价于a = a+1 --自减运算符.如a--,--a,都等价于a = a-1 5++是错误的,因为5是常量 2. ++a和a++的区别 int ...
- OpenGL-渲染管线的流程(有图有真相)
视频教程请关注 http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440 学习shader之前必须知道的事情,shader(着色语言)到 ...
- hibernate get VS load
1. 执行get方法:会立即加载对象 而执行load方法,若不适用该对象,则不会立即执行查询操作,而返回一个代理对象 get立即检索,load延迟检索 2. load方法可能 ...
- Codevs 1010 过河卒
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同 ...
- 利用二维矩阵求spanning tree
只做了9个节点的,无权值,使用了n-1个=8个循环,非常麻烦.一级一级判断是否连接,连接及记录所在节点,以后不再使用,确保无回路. 验证后无回路,但只试过几种情况. 代码如下: #include< ...
- linux系统环境变量.bash_profile/bashrc文件
系统环境变量的查看: [root@localhost ~]# envHOSTNAME=localhost.localdomainSELINUX_ROLE_REQUESTED=TERM=xtermSHE ...
- VIM小技巧之文件名补全
恩,这两天在看<简明Python教程>,那里面作者建议写代码的时候前面的注释写上文件名,写上调用的解释器,比如这样: 恩,然后我当然不可能每回新建一个文件,就要在开头写上一大串东西啊,vi ...