题目详见:3487 -- The Stable Marriage Problem

从特殊情况入手举例,逐渐增加特殊性。若有三对男女,男1、男2都找到了最优女友女2、女1,剩男3发现自己的最优女友女1被抢了,于是找男2.主动权这时候才落到女生这,喜欢男3就踹原来的男2,否则拒绝男3.该法则以此类推。直到有一个男的和所有女孩约过会后无可选择,只好留下剩女,这就是稳定匹配。

自己动手模拟,编一半编不下去了QAQ……

眼高手低,看看问题在哪。

首先,告诉你男女的命名方式,不就明摆着说你可以通过-‘a’、-‘A’这样的方式对名字进行转化了?无非是判断这个位置有没有人(因为是一段连续的数组),直接0/1表示就行。而且这样还不用考虑顺序的影响,太棒了!这就是将信息转换为数据的好处,大大增强可操作性。

再看主程序。终止条件是有先手(即男的)约会过所有女孩却仍是单身才终止程序。怎么判断是否有男人单身呢?我们又注意到,男的总有可能被女生踹,而且我们会拿那个被踹的男生分析看他能不能找到对象,可以想到需要通过队列或栈来实现此种功能。此时突然发现,先分析主程序再考虑对原始数据的处理方式,会大大提高效率。不说了,再去写代码。

写到使用数组表示男孩最喜欢的女孩时,我们继续思索。如果b[i][j]表示第i位男孩的第j喜欢的女孩的名(用序号表示),那么每次男孩若被踢出,就只需j+1即可继续向下寻找。如何得到这样的数据?回到输入,发现只要读入女生名字p再b[i][j]=p-‘A’即可。此处我们自然想到了要有now数组储存每个男生遍历到的自己评分表中的位置,而答案也确实如此!!!

我们从栈中取出一个单身汉,并用now寻找其目前的理想对象。若她还未谈过恋爱,暂时成功配对;若谈过,则看她对他的评分是否大于她的原男友,小于则被踹,继续找;大于则原男友被踹。等等,这样的话,女生的评分数组实际是存放对男生的排名(如:女生C对男生b的评分为g['C'-'A']['b'-'a'])!这个数据在输入的时候该如何处理?我们发现,只需要在读入的时候,令g[i][p-'a']=j即可,其中i为第i个女孩,p-‘a’为男孩序号,j为排名。由于女生并不需要像男生那样去遍历找对象,其被动性使得这种数据是有效的。

小技巧是,如果能把数据用简单的格式命名,会方便查看(比如正在被追求的女孩);编程中,若想过滤掉无用输入就使用getchar()循环是最靠谱的。使用scanf的时候发现人家可以读进‘ ’和‘\n’!实在不行就调试吧QAQ

蒟蒻自推——稳定匹配相关推荐

  1. 蒟蒻自推——poj 2785,点名批评越界限制不加

    属于是那种别人告诉了该用什么方法可还是想不出来的巨巨蒟蒻QAQ只知道暴力循环肯定会超时,将数据先计算求出来就会超内存-- 瞜一眼大佬的答案,咦,这种方法不是会超内存吗?结果一去看,人家给开了22800 ...

  2. [颓废史]蒟蒻的刷题记录

    QAQ蒟蒻一枚,其实我就是来提供水题库的. 以下记录从2016年开始. 1.1 1227: [SDOI2009]虔诚的墓主人 树状数组+离散化 3132: 上帝造题的七分钟 树状数组 二维区间加减+查 ...

  3. 本蒟蒻对于二分图一些定理的理解

    本蒟蒻对于二分图一些定理的理解 先给出一些定理 (常识) 1.对于一个无向图 G,若 G 中的所有回路长度均为偶数,则G为一个二分图. 2.二分图的最小点覆盖 = 最大匹配数. 3.二分图的最大独立集 ...

  4. USACO 简易题解(蒟蒻的题解)

    蒟蒻难得可以去比赛,GDOI也快到了,还是认真刷题(不会告诉你之前都在颓废),KPM 神犇既然都推荐刷USACO, 辣就刷刷. 现在蒟蒻还没刷完,太蒟刷得太慢,so 写了的搞个简易题解(没代码,反正N ...

  5. 蒟蒻的HNOI2017滚粗记

    蒟蒻的第一次省选,然而并没有RP爆发... Day 1: 8:00开考,(然而密码错误是什么鬼).跌跌撞撞,8:40终于拿到纸质试题. { T1:作为一名没有学过Splay的蒟蒻,考场上真的被出题人感 ...

  6. CSP 2020 S 蒟蒻的游记 (洛谷同步)

    我是傻逼,第一次考,太没有经验了 T1: 毒瘤模拟- 我 if + 计算函数 打+调了2小时 ... 样例WA了 心态炸了- T2. 我没学过如何计算并保存一个数的每一个二进制位- 但是,蒟蒻也是个S ...

  7. 蒟蒻成长之路(持续更新)

    蒟蒻成长之路 (这个玩意只是闲着写写, 写给自己看的) 开始 开始日期:2023年3月23日20:55:24 内容 主要记录一些做题日常和快乐的学校生活 初一:2022~2023 Day1--2023 ...

  8. 背包九讲 (蒟蒻版)之01背包

    hello,你们的loony上线啦.你们知道吗?我今天早上起来一看手机,600多人在CSDN上访问过我,当时我心情都要炸了(补充:高兴炸了),因为,这毕竟只是本蒟蒻的梦想嘛~ 好了不嘚瑟啦! 今天就来 ...

  9. 【bzoj4916】神犇和蒟蒻 杜教筛

    题目描述 很久很久以前,有一只神犇叫yzy; 很久很久之后,有一只蒟蒻叫lty; 输入 请你读入一个整数N;1<=N<=1E9,A.B模1E9+7; 输出 请你输出一个整数A=\sum_{ ...

  10. 蒟蒻浅谈树链剖分之一——两个dfs操作

    树链剖分,顾名思义就是将树形的结构剖分成链,我们以此便于在链上操作 首先我们需要明白在树链剖分中的一些概念 重儿子:某节点所有儿子中子树最多的儿子 重链:有重儿子构成的链 dfs序:按重儿子优先遍历时 ...

最新文章

  1. vue父子组件写法,数据传递,顺便封装 element-ui的弹窗组建
  2. App启动闪屏黑屏问题
  3. Map获取键值,Map的几种遍历方法
  4. suse 安装mysql5.6_SuSE11安装MySQL5.6.40:RPM安装方式
  5. 三种睡眠时间函数的区别:linux 的sleep()、usleep()、nanosleep()函数
  6. T1683 车厢重组 codevs
  7. 第三次学JAVA再学不好就吃翔(part95)--Collections工具类
  8. ios程序 调试log宏的添加
  9. C++ char 类型:字符型和最小的整型
  10. 市场营销分析--页面广告统计
  11. MT4MT5跟单EA系统跨平台
  12. 不联网安装 SQL server 2012 的问题
  13. 鸿蒙曰蜉蝣不知所求,【经典金句408 · 庄子】:浮游,不知所求;猖狂,不知所往;游者鞅掌,以观无妄。...
  14. Go语言框架Gin之4 安全认证
  15. 捕捉生命中的每一道彩虹
  16. 洋河梦之蓝M9政府专供 是真是假?
  17. matlab 水文,MATLAB在水文水能计算中的应用
  18. 重庆文理学院计算机科学与技术排名,2016重庆市大学一流学科排行榜,重大第一...
  19. mos管实现主副电源自动切换电路,并且“零”压降,静态电流20uA
  20. ffmpeg colorkey_options中的black对应的十六进制

热门文章

  1. mint-ui引用iconfont图标
  2. 钉钉微应用H5的调试方法
  3. python有理数_Python3标准库:fractions有理数
  4. 浙江日报软件测试怎么样,浙江日报
  5. QML_虚拟键盘使用
  6. markdown温习笔记
  7. matlab幻方变换_Matlab入门1-幻方矩阵
  8. albrooks图表解读_【正版全新】日本蜡烛图交易技术分析:详细解读价格行为模式 [美] 艾尔·布鲁克(Al Brooks)...
  9. 小程序通过background-image设置背景图片
  10. oracle 返回部分行,求救,返回部分结果后,才报单行子查询返回多行。