稳定婚姻问题:

有n个男生,n个女生,所有女生在每个男生眼里有个排名,反之一样、

将男生和女生两两配对,保证不会出现婚姻不稳定的问题。

即A-1,B-2 而A更喜欢2,2更喜欢A。

算法流程:

每次男生向自己未追求过的排名最高女生求婚。

然后每个有追求者的女生在自己现男友和追求者中选择一个最喜欢的接受,然后拒绝其他人。

算法一定可以结束。

因为如果最后有一个男生单身,那他一定把所有女生都追求过一遍,说明没有女生单身,产生矛盾。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<vector>
#define inf 0x3f3f3f3f
#define pb(x) push_back(x)
using namespace std;
int read()
{
char c=getchar();int p=0;
while(c<'0'||c>'9')c=getchar();
while(c>='0'&&c<='9')p=p*10+c-'0',c=getchar();
return p;
}
int n,m;
int map[205][405];
int man[205][205];
int wom[206][206];
int ok[205],ko[205];
int now[205];
int num;
vector<int>v[205];
void solve()
{
num=0;
memset(ko,0,sizeof(ko));
memset(ok,0,sizeof(ok));
memset(now,0,sizeof(now));
for(int i=1;i<=n;i++)now[i]=1;
while(num<n)
{
for(int i=1;i<=n;i++)
{
if(!ok[i])
{
v[man[i][now[i]]].pb(i);
now[i]++;
}
}
for(int i=1;i<=n;i++)
{
int mn=-1;
for(int j=0;j<v[i].size();j++)
{
if(mn==-1||wom[i][v[i][j]]<wom[i][mn])mn=v[i][j];
}
if(mn!=-1)
{
if(!ko[i]||wom[i][mn]<wom[i][ko[i]])
{
if(!ko[i])num++;
ok[ko[i]]=0;
ko[i]=mn;
ok[mn]=i;
}
}
v[i].clear();
}
}
for(int i=1;i<=n;i++)
{
printf("%d%c",ok[i]," \n"[i==n]);
}
puts("");
return ;
}
int main()
{
int cas;
scanf("%d",&cas);
while(cas--)
{
memset(map,0,sizeof(map));
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
int cnt=0;
for(int j=1;j<=m;j++)
{
scanf("%d",&map[i][j]);
if(map[i][j]!=0)
{
man[i][++cnt]=map[i][j];
wom[map[i][j]][i]=m-j;
}
}
}
solve();
}
return 0;
}

  

bzoj 3816&&uoj #41. [清华集训2014]矩阵变换的更多相关文章

  1. UOJ.41.[清华集训2014]矩阵变换(稳定婚姻)

    题目链接 稳定婚姻问题:有n个男生n个女生,每个男/女生对每个女/男生有一个不同的喜爱程度.给每个人选择配偶. 若不存在 x,y未匹配,且x喜欢y胜过喜欢x当前的配偶,y喜欢x也胜过y当前的配偶 的完 ...

  2. [BZOJ3816][清华集训2014]矩阵变换(稳定婚姻问题)

    3816: 矩阵变换 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 803  Solved: 578[Submit][Status][Discuss] ...

  3. BZOJ 4732 UOJ #268 [清华集训2016]数据交互 (树链剖分、线段树)

    题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=4732 (UOJ) http://uoj.ac/problem/268 题解 ...

  4. uoj #46[清华集训2014]玄学

    uoj 因为询问是关于一段连续区间内的操作的,所以对操作构建线段树,这里每个点维护若干个不交的区间,每个区间\((l,r,a,b)\)表示区间\([l,r]\)内的数要变成\(ax+b\) 每次把新操 ...

  5. uoj 41 【清华集训2014】矩阵变换 婚姻稳定问题

    [清华集训2014]矩阵变换 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/41 Description 给出 ...

  6. AC日记——【清华集训2014】奇数国 uoj 38

    #38. [清华集训2014]奇数国 思路: 题目中的number与product不想冲: 即为number与product互素: 所以,求phi(product)即可: 除一个数等同于在模的意义下乘 ...

  7. [UOJ#274][清华集训2016]温暖会指引我们前行

    [UOJ#274][清华集训2016]温暖会指引我们前行 试题描述 寒冬又一次肆虐了北国大地 无情的北风穿透了人们御寒的衣物 可怜虫们在冬夜中发出无助的哀嚎 “冻死宝宝了!” 这时 远处的天边出现了一 ...

  8. UOJ#46. 【清华集训2014】玄学

    传送门 分析 清华集训真的不是人做的啊嘤嘤嘤 我们可以考虑按操作时间把每个操作存进线段树里 如果现在点x正好使一个整块区间的右端点则更新代表这个区间的点 我们不难发现一个区间会因为不同的操作被分成若干 ...

  9. bzoj 4736 /uoj274【清华集训2016】温暖会指引我们前行 lct

    [清华集训2016]温暖会指引我们前行 统计 描述 提交 自定义测试 寒冬又一次肆虐了北国大地 无情的北风穿透了人们御寒的衣物 可怜虫们在冬夜中发出无助的哀嚎 “冻死宝宝了!” 这时 远处的天边出现了 ...

随机推荐

  1. LimeSDR在windows下使用Gqrx来接收FM广播

    本文内容.开发板及配件仅限用于学校或科研院所开展科研实验! 淘宝店铺名称:开源SDR实验室 LimeSDR链接:https://item.taobao.com/item.htm?spm=a230r.1 ...

  2. 2015第六届蓝桥杯C/C++ B组

    奖券数目:枚举 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其 ...

  3. 机器学习算法 --- Decision Trees Algorithms

    一.Decision Trees Agorithms的简介 决策树算法(Decision Trees Agorithms),是如今最流行的机器学习算法之一,它即能做分类又做回归(不像之前介绍的其他学习 ...

  4. JavaScript学习(2)call&apply&bind&eval用法

    javascript学习(2)call&apply&bind&eval用法 在javascript中存在这样几种特别有用的函数,能方便我们实现各种奇技淫巧.其中,call.bi ...

  5. XSS-DVWA

    1.反射型 LOW: 没有过滤,直接键入PAYLOAD 查看源码 这里没有任何过滤,使用htmlspecialchars()过滤 结果不弹窗 MEDIUM: LOW等级的方法不奏效了 观察输出可能是过 ...

  6. [朴孝敏][Road Trip]

    歌词来源:http://music.163.com/#/song?id=406907305 作曲 : Ryan S. Jhun/G'harah 'PK' Degeddingseze/Denzil Re ...

  7. jQuery获取复选框选中的每一个值

    $('input[name="serviceMode"]:checked').each(function(){ this.attr('value') });

  8. 团队博客作业Week5 --- 团队贡献分--分配规则

    团队会议 时间:公元2015年10月26日22时3分20秒 地点:宿舍楼716房间 与会人员:陈谋,李剑锋,卢惠民,刘夕霆,仉伯龙,潘成鼎. 会议内容:今天的组会主要讨论的是项目团队贡献分的计算方式, ...

  9. 实验三 Java猜数字游戏开发

    课程:Java实验   班级:201352     姓名:程涵  学号:20135210 成绩:             指导教师:娄佳鹏   实验日期:15.06.03 实验密级:         ...

  10. WebGL七点二

    与上一节相比这一节相当做了些整合和整理,目的是提高了读写效率和减少代码量,就是做了优化.这里我们只需要在顶点着色器中定义一个用于从js传递参数的变量u_MvcMatrix一看就知道是uniform变量 ...