题目链接:

题目

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 稳定婚姻问题的更多相关文章

  1. UVA 1175 - Ladies' Choice

    1175 - Ladies' Choice 链接 稳定婚姻问题. 代码: #include<bits/stdc++.h> using namespace std; typedef long ...

  2. LA 3989 - Ladies' Choice 稳定婚姻问题

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  3. UVA 1175 Ladies' Choice 女士的选择(稳定婚姻问题,GS算法)

    题意: 给出每个男的心目中的女神排序,给出每个女的心目中的男神排序,即两个n*n的矩阵,一旦任意两个非舞伴的男女同学觉得对方都比现任舞伴要好,他们就会抛弃舞伴而在一起.为了杜绝这种现象,求每个男的最后 ...

  4. UVALive3989 Ladies' Choice —— 稳定婚姻问题 Gale - Shapely算法

    题目链接:https://vjudge.net/problem/UVALive-3989 题解: 题意:有n个男生和n个女生.每个女生对男神都有个好感度排行,同时每个男生对每个女生也有一个好感度排行. ...

  5. UVALive 3989Ladies' Choice(稳定婚姻问题)

    题目链接 题意:n个男生和女生,先是n行n个数,表示每一个女生对男生的好感值排序,然后是n行n列式每一个男生的好感值排序,输出N行,即每个女生在最好情况下的男生的编号 分析:如果是求女生的最好情况下, ...

  6. 【UVAlive 3989】 Ladies' Choice (稳定婚姻问题)

    Ladies' Choice Teenagers from the local high school have asked you to help them with the organizatio ...

  7. Ladies' Choice UVALive - 3989 稳定婚姻问题 gale_shapley算法

    /** 题目: Ladies' Choice UVALive - 3989 链接:https://vjudge.net/problem/UVALive-3989 题意:稳定婚姻问题 思路: gale_ ...

  8. UVALive-3989 Ladies' Choice (稳定婚姻问题)

    题目大意:稳定婚姻问题.... 题目分析:模板题. 代码如下: # include<iostream> # include<cstdio> # include<queue ...

  9. 训练指南 UVALive - 3989(稳定婚姻问题)

    ayout: post title: 训练指南 UVALive - 3989(稳定婚姻问题) author: "luowentaoaa" catalog: true mathjax ...

随机推荐

  1. Sass之初识

    Sass is the most mature, stable, and powerful professional grade CSS extension language in the world ...

  2. CSS之Document方法的使用

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 删除HT和CAS角色与扩展在另一台服务器

      背景:原先使用三合一方式部署的架构,如今不再满足企业需求,因此需要将原来的一台服务器多角色的拆分开,即由原来CAS.HT.MBX角色集一台服务器的分成两台服务器来部署,此架构为MBX角色单独部署在 ...

  4. DOS删除服务

    启动服务:   net   start   服务名   停止服务:   net   stop     服务名   卸载服务:   服务名   -uninstall 安装服务:sc create ser ...

  5. Template_16_模板与继承

    1,名称模板参数template <typename PolicySetter1 = DefaultPolicy1,    typename PolicySetter2 = DefaultPol ...

  6. 关于FileOutputStream的问题

    FileoutputStream在文件不存在的情况下会新建文件,但是有几个注意点: 1.有目录名(文件夹名)和文件名重复的话,会报错: 2.目录名不存在的情况下,也会报错

  7. JSON结构

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...

  8. php 获取链接参数

    private function getQuerystr($url,$key){        $res = '';        $a = strpos($url,'?');        if($ ...

  9. 如何计算IP地址及CIDR(收藏)

    如何计算IP地址及CIDR 一. IP地址概念 IP地址是一个32位的二进制数,它由网络ID和主机ID两部份组成,用来在网络中唯一的标识的一台计算机.网络ID用来标识计算机所处的网段:主 机ID用来标 ...

  10. Python中Cookie的处理(一)Cookie库

    Cookie用于服务器实现会话,用户登录及相关功能时进行状态管理.要在用户浏览器上安装cookie,HTTP服务器向HTTP响应添加类似以下内容的HTTP报头: Set-Cookie:session= ...