HDU 1522 Marriage is Stable 【稳定婚姻匹配】(模板题)
<题目链接>
题目大意:
给你N个男生和N个女生,并且给出所有男生和女生对其它所有异性的喜欢程度,喜欢程度越高的两个异性越容易配对,现在求出它们之间的稳定匹配。
解题分析:
稳定婚姻问题的模板题,需要用到Gale_Shapley算法,GS算法讲解 >>>
这个算法还是很直观的。
#include <iostream>
#include <cstring>
#include <stack>
#include <string>
#include <map>
#include <algorithm>
using namespace std; #define N 505
#define clr(a,b) memset(a,b,sizeof(a))
#define rep(i,s,t) for(int i=s;i<=t;i++) int n,getmp_boy[N][N],getmp_girl[N][N],boy[N],girl[N],rnk[N];
map<string,int>mp_boy,mp_girl;
string s,name_boy[N],name_girl[N]; void Gale_Shapley(){
clr(boy,);clr(girl,);
rep(i,,n) rnk[i]=;
while(true){
bool flag=false;
rep(i,,n){
if(!boy[i]){
int x=getmp_boy[i][rnk[i]++]; //x为当前男生所最求的他没有尝试最求过的最喜欢的女生
if(!girl[x]){ //如果这个女生没有和男生配对
boy[i]=x; //那么这对男女进行配对
girl[x]=i;
}else if(getmp_girl[x][i] > getmp_girl[x][girl[x]]){ //如果当前女生已经配对,那么就判断她对这两个男生的喜欢程度
boy[girl[x]]=; //将原来的男生抛弃
girl[x]=i; //将这两个男女进行配对
boy[i]=x;
}
flag=true;
}
}
if(!flag)break; //如果所有男生都已配对,则直接退出
}
rep(i,,n) cout<<name_boy[i]<<" "<<name_girl[boy[i]]<<endl;
} int main(){
ios_base::sync_with_stdio(false);
cin.tie();cout.tie();
while(cin>>n){
mp_boy.clear();mp_girl.clear();
int pos=,tmp;
rep(i,,n){
cin>>s;name_boy[i]=s;
mp_boy[s]=i;
rep(j,,n){
cin>>s;tmp=mp_girl[s];
if(!tmp){ //对于之前没有出现过个的女生姓名,重新分配序号
tmp=pos++;
mp_girl[s]=tmp;
name_girl[tmp]=s;
}
getmp_boy[i][j]=tmp; //记录第i个男生第j个喜欢的女生是tmp
}
}
rep(i,,n){
cin>>s;int x=mp_girl[s];
rep(j,,n){
cin>>s;int y=mp_boy[s];
getmp_girl[x][y]=n-j; //记录第i个女生喜欢男生y的程度是n-j
}
}
Gale_Shapley();
}
}
2019-01-17
HDU 1522 Marriage is Stable 【稳定婚姻匹配】(模板题)的更多相关文章
- HDU 1522 Marriage is Stable 稳定婚姻匹配
http://acm.hdu.edu.cn/showproblem.php?pid=1522 #include<bits/stdc++.h> #define INF 0x3f3f3f3f ...
- HDU1522 稳定婚姻匹配 模板
Marriage is Stable Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- POJ 3487 The Stable Marriage Problem(稳定婚姻问题 模版题)
Description The stable marriage problem consists of matching members of two different sets according ...
- 【HDU1914 The Stable Marriage Problem】稳定婚姻问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1914 题目大意:问题大概是这样:有一个社团里有n个女生和n个男生,每位女生按照她的偏爱程度将男生排序, ...
- HDU1914 稳定婚姻匹配
The Stable Marriage Problem Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (J ...
- HDU 1512 Monkey King(左偏树模板题)
http://acm.hdu.edu.cn/showproblem.php?pid=1512 题意: 有n只猴子,每只猴子一开始有个力量值,并且互相不认识,现有每次有两只猴子要决斗,如果认识,就不打了 ...
- HDU 1213 - How Many Tables - [并查集模板题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1213 Today is Ignatius' birthday. He invites a lot of ...
- HDU 3068 最长回文( Manacher模板题 )
链接:传送门 思路:Manacher模板题,寻找串中的最长回文子串 /***************************************************************** ...
- HDU - 3081 Marriage Match II 【二分匹配】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3081 题意 有n对男女 女生去选男朋友 如果女生从来没和那个男生吵架 那么那个男生就可以当她男朋友 女 ...
随机推荐
- Ubuntu16.04配置Tomcat的80端口访问
[问题描述] 在阿里云 ECS 服务器 Ubuntu16.04 下部署 Java Web 应用时,发现配置的 Tomcat 服务启动后 80 端口无法被监听. [问题原因] 出现该问题的主要原因是:非 ...
- Confluence 6 数据中心的缓存
在 Confluence 数据中心(集群)你需要分布缓存和每一个节点的缓存.在集群管理界面,将会定义分布缓存和节点本地缓存. 缓存配置文件存储在集群共享目录中的 home 目录下面. https:// ...
- Confluence 6 的系统配置信息的示例
awt.toolkit sun.awt.X11.XToolkit file.encoding.pkg sun.io java.specification.version 1.8 sun.cpu.isa ...
- ionic3 使用html2canvas将数据导出为图片,并下载本地
1.安装html2canvas npm install --save html2canvas 官方网站 https://html2canvas.hertzen.com/ 2.在需要的组件中引入html ...
- 判断ie浏览器7、8、9三个版本
判断ie浏览器7.8.9三个版本 上午的时候,本来是想做一个position:fixed在各个浏览器下兼容的方案的,但是发现ie7/8下面的position:fixed只支持一个屏幕,如果内容高度 ...
- Coding配合git使用时遇到的问题
转载整理: https://www.jianshu.com/p/b23cd00cffa6 https://www.cnblogs.com/yidoucai/p/5228763.html https:/ ...
- linux 系统备份和恢复
Linux不像windows,它不限制根用户存取任何东西,因此,你完全可以把一个分区上每一个的文件放入一个TAR文件中. 使用root用户切换到根目录 然后,使用下面的命令备份完整的系统: tar c ...
- java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
1.启动hive的时候出现这个问题,报错如下所示: [hadoop@slaver1 conf]$ hive Logging initialized -cdh5.-cdh5.3.6.jar!/hive- ...
- UE4 ShooterGame Demo的开火的代码
之前一直没搞懂按下鼠标左键开火之后,代码的逻辑是怎么走的,今天看懂了之前没看懂的部分,进了一步 ShooterCharacter.cpp void AShooterCharacter::OnStart ...
- Android设备一对多录屏直播--(UDP组播连接,Tcp传输)
原文:https://blog.csdn.net/sunmmer123/article/details/82734245 近期需要学习流媒体知识,做一个Android设备相互投屏Demo,因此找到了这 ...