博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVALive 3989Ladies' Choice(稳定婚姻问题)
阅读量:4965 次
发布时间:2019-06-12

本文共 1757 字,大约阅读时间需要 5 分钟。

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

分析:如果是求女生的最好情况下,就要从女生开始选,这样女生都是从最好的到不好的来选,而男生却相反--只能娶那些自己有可能最没好感的女生,因为男生是被动的,他最喜欢的女生不见的会向他求婚。

刘汝佳书上命名错了,so也跟着把男生当成女生了,懒得改命名了,

1 #include 
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 const int Max = 1010; 8 int pref[Max][Max], order[Max][Max], Next[Max]; 9 int future_hasband[Max], future_wife[Max];10 queue
q; //单身女生队列11 void engage(int man, int woman)12 {13 int m = future_hasband[woman];14 if(m)15 {16 future_wife[m] = 0;17 q.push(m);18 }19 future_hasband[woman] = man;20 future_wife[man] = woman;21 return;22 }23 int main()24 {25 int T;26 scanf("%d", &T);27 while(T--)28 {29 int n;30 scanf("%d", &n);31 while(!q.empty())32 q.pop();33 for(int i = 1; i <= n; i++)34 {35 for(int j = 1; j <= n; j++)36 scanf("%d", &pref[i][j]);37 future_wife[i] = 0; // 女生i没有匹配38 Next[i] = 1; // 都是从第一个开始查找39 q.push(i); // 加入单身队列40 }41 for(int i = 1; i <= n; i++)42 {43 for(int j = 1; j <= n; j++)44 {45 int x;46 scanf("%d", &x);47 order[i][x] = j; // 表示男生i 对 女生 x 的好感等级48 }49 future_hasband[i] = 0;50 }51 while(!q.empty())52 {53 int man = q.front();54 q.pop();55 int woman = pref[man][Next[man]++];56 if(future_hasband[woman] == 0) // 表示这个男生并没有 匹配57 engage(man, woman);58 else if(order[woman][man] < order[woman][future_hasband[woman]]) // 虽然已经匹配了,但是同已经匹配的好感层度来看,更喜欢这个59 engage(man, woman);60 else 61 q.push(man); // 否则继续单身,等待下次解救62 }63 for(int i = 1; i <= n; i++)64 printf("%d\n", future_wife[i]);65 if(T)66 printf("\n");67 }68 69 return 0;70 }
View Code

 

转载于:https://www.cnblogs.com/zhaopAC/p/5251798.html

你可能感兴趣的文章
3-day3-list-truple-map.py
查看>>
02: djangorestframework使用
查看>>
7zip 自解压安装程序
查看>>
Graph-tool简介 - wiki
查看>>
jenkins 离线安装插件 ,插件的下载地址
查看>>
Edit控件显示多行文字
查看>>
java 日期与时间类
查看>>
JS第二周
查看>>
杭电1217————不像最短路的"最短路"
查看>>
【iCore3双核心板】发布 iCore3 硬件手册!
查看>>
Leetcode Word Break
查看>>
css性质
查看>>
python数据结构
查看>>
正则指引-括号(3)反向引用
查看>>
android开发读书笔记
查看>>
Gitlab配置、备份、升级、迁移
查看>>
dataTable.NET的search box每輸入一個字母進行一次檢索的問題
查看>>
Python 文件处理
查看>>
邻接表详解
查看>>
android,radio,checkbox
查看>>