HDU 1435 Stable Match 稳定婚姻

Stable Matching Problem稳定匹配问题-----稳定婚姻算法 (一)问题的引出:             有N男N女,每个人都按照他对异性的喜欢程度排名。现在需要写出一个算法安排这N个男的、N个女的结婚,要求两个人的婚姻应该是稳定的。             何为稳定?             有两对夫妻M1 F2,M2 F1。M1心目中更喜欢F1,但是他和F2结婚了,M2心目中更喜欢F2,但是命运却让他和F1结婚了,显然这样的婚姻是不稳定的,随时都可 阅读详情
思路:就是一个简单的稳定婚姻问题的模型,把距离近的,容量大的排在见面。然后就是发射方一次次就追求,接收方选择接受还是不接受。

http://acm.hdu.edu.cn/showproblem.php?pid=1435

/*********************************************
    Problem : HDU 1435
    Author  : NMfloat
    InkTime (c) NM . All Rights Reserved .
********************************************/

#include <map>
#include <set>
#include <queue>
#include <stack>
#include <cmath>
#include <ctime>
#include <cstdio>
#include <vector>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>

#define rep(i,a,b)  for(int i = (a) ; i <= (b) ; i ++) //遍历
#define rrep(i,a,b) for(int i = (b) ; i >= (a) ; i --) //反向遍历
#define repS(it,p) for(auto it = p.begin() ; it != p.end() ; it ++) //遍历一个STL容器
#define repE(p,u) for(Edge * p = G[u].first ; p ; p = p -> next) //遍历u所连接的点
#define cls(a,x)   memset(a,x,sizeof(a))
#define eps 1e-8

using namespace std;

const int MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const int MAXN = 1e5+5;
const int MAXE = 2e5+5;

typedef long long LL;
typedef unsigned long long ULL;

int T,n,m;

int fx[] = {0,1,-1,0,0};
int fy[] = {0,0,0,-1,1};

struct Point{
    double x,y,z;
    double dist(Point & B) {
        return (x-B.x) * (x-B.x) + (y-B.y) * (y-B.y) + (z-B.z) * (z-B.z);
    }
};

struct Dist {
    double d;
    int v;
    int id;
}dist[205];

Point A[205];
Point B[205];

int Va[205];
int Vb[205];
int RankA[205][205];

void input() {
    scanf("%d",&n);
    int id;
    rep(i,1,n) {
        scanf("%d",&id);
        scanf("%d %lf %lf %lf",&Va[id],&A[id].x,&A[id].y,&A[id].z);
    }
    rep(i,1,n) {
        scanf("%d",&id);
        scanf("%d %lf %lf %lf",&Vb[id],&B[id].x,&B[id].y,&B[id].z);     
    }
}

bool cmp(Dist a1,Dist a2) {
    if(a1.d == a2.d) return a1.v > a2.v;
    return a1.d < a2.d;
}

bool compare(int v,int u1,int u2) {
    Dist a1,a2;
    a1.d = B[v].dist(A[u1]); a1.v = Va[u1];
    a2.d = B[v].dist(A[u2]); a2.v = Va[u2];
    return cmp(a1,a2);
}

int matchA[205];
int matchB[205];
int lick[205];

void debug() {
    rep(i,1,n) {
        rep(j,1,n) {
            printf("%d ",RankA[i][j]);
        }
        puts("");
    }
}

void solve() {
    rep(i,1,n) {
        rep(j,1,n) { dist[j].d = A[i].dist(B[j]); dist[j].id = j; dist[j].v = Vb[j]; }
        sort(dist+1,dist+1+n,cmp);
        rep(j,1,n) { RankA[i][j] = dist[j].id;}// printf("%f ",dist[j].d); } puts("");
    }

    //开始
    cls(matchA,0);
    cls(matchB,0);
    cls(lick,0);
    int flg = 0;
    while(1) { //可能不止n轮
        int ok = 0;
        rep(i,1,n) { //第i个发射塔
            if(!matchA[i]) {
                ok = 1;
                int u = ++lick[i];
                if(u > n) {flg = 1 ; break;}
                int v = RankA[i][u]; //追求的人
                if(!matchB[v]) {
                    matchB[v] = i;
                    matchA[i] = v;
                }
                else {
                    if(compare(v,i,matchB[v])) {
                        matchA[matchB[v]] = 0;
                        matchB[v] = i;
                        matchA[i] = v;
                    }
                }
            }
        }
        if(flg) break;
        if(!ok) break;
    }
    // debug();
    if(flg) puts("Impossible");
    else {
        rep(i,1,n) printf("%d %d\n",i,matchA[i]);
        puts("");
    }
}

int main(void) {
    //freopen("a.in","r",stdin);
    scanf("%d",&T); while(T--) {
        input();
        solve();
    }
    return 0;
}
GS稳定匹配算法实现代码 设计输入男人和女人的优先表并转化,通过自由男人的列表不断更新,最终确定出稳定匹配的对数并输出之。 立即下载

相关推荐

稳定匹配算法实验

稳定匹配算法实验 包含经典题目及算法伪代码 详情参见我的博客

匹配问题

匹配问题匹配问题中的重要概念GS算法GS算法的几个特性 匹配问题中的重要概念 匹配,假设有男人的集合M和女人的集合W,每个男人向女人W求婚,并且两个人成功组成一对,就叫做匹配。 完美匹配,假设集合M和集合W的数量相同,都是n,即n个男人,n个女人,如果使用一种算法,最后所有的男人和女人成功匹配,没有一个单身的男人或者单身的女人,那么就叫做完美匹配。 不稳定匹配,假设完美匹配形成了集合S,其中男人...

HuZhenXing 5957

数字化婚姻配对android实现

在eclipse下加入android sdk 进行开发的一个数字化婚姻配对,很实用

稳定婚姻模型

原文地址:https://blog.youkuaiyun.com/qq_33913037/article/details/71328099 假如你是一个媒人,有若干个单身男子登门求助,还有同样多的单身女子也前来征婚。如果你已经知道这些女孩在每个男人心目中的排名,以及男孩们在每个女孩心中的排名(1),你应该怎样为他们牵线配对呢?最好的配对方案当然是,每个人的另一半正好都是自己的“第一选择”。...

babing2770的博客 320

稳定婚姻匹配

(第一行数据表示 Man(Woman)的数目 n;接下来的数据中,第一个 n*n 的数据 块表示 Man 的优先列表;另一个 n*n 的数据块表示 Woman 的优先列表) 5 -------------- (Man(Woman)的数目 n) 2 1 4 5 3 -------------- (第一个男人的优先列表) 4 2 1 3 5 2 5 3 4 1 -------------- (第三个男人的优先列表) 1 4 3 2 5 2 4 1 5 3 5 1 2 4 3 --------------- (第一个女人的优先列表) 3 2 4 1 5 2 3 4 5 1 1 5 4 3 2 4 2 5 3 1 Output 男人 1 到 n 的匹配对象,每个数字后边跟一个空格,最后输出一个\n。

大模型抽取知识图谱三元组的可行性分析

通过结合传统信息抽取模型与大语言模型的混合架构,可高效完成从学术文献到知识图谱三元组的全流程构建。分阶段优化:传统模型负责粗粒度抽取,大模型负责细粒度修正。灵活提示设计:通过少样本学习引导大模型理解领域本体。严格质量控制:结合规则引擎和人工校验,确保三元组准确性。该方案可显著提升知识图谱构建效率,适用于学术研究、企业知识库等场景。

qq_20647053的博客 1064

稳定婚姻问题和Gale-Shapley算法

稳定婚姻问题和Gale-Shapley算法 作者: baiyuzhong分类:架构实践  阅读:5,662 次添加评论 文 / 顾森 什么是算法?每当有人问作者这样的问题时,他总会引用这个例子:假如你是一个媒人,有若干个单身男子登门求助,还有同样多的单身女子也前来征婚。如果你已经知道这些女孩儿在每个男孩儿心目中的排名,以及男孩儿们在每个女孩儿心中的排名,你应该怎样为他们牵线配对呢? 最

baisung的专栏 8405

SAP ABAP实战:手把手教你用BAPI_BILLINGDOC_CREATEMULTIPLE批量开票(附完整代码与避坑指南)

本文详细解析了SAP ABAP中BAPI_BILLINGDOC_CREATEMULTIPLE批量开票的全流程,包括参数配置、事务控制、错误处理及性能优化。通过实战案例和完整代码示例,帮助开发者高效处理大批量发票生成任务,避免常见陷阱,提升开发效率。

weixin_34101914的博客 265

matlab GS算法

输入图片为啥是三维? 第7行维度不匹配。 close all;clear all;clc; % %% simulate the complex object INput= imresize((imread('DY.JPG')),[120,90]); objectAmplitude = uint8(INput); objectPhase = uint8(imread('DY.JPG'

fangjiaoshou886的博客 9956

ACC自适应巡航功能

自适应巡航功能(Adaptive Cruise Control)通过传感器检测车辆前方形式环境,控制自车行驶速度以达到定速巡航、跟车巡航、跟车启停,并支持超车辅助等功能。1. 定速巡航一般可设置车辆在30~150km/h的定速范围内巡航2. 跟车巡航车速0~150km/h范围内的跟车巡航3. 跟车启停30s内:自车随之起步,驾驶员无需操作30s~600s内:驾驶员按钮激活 或 轻踩加速踏板激活起步600s后:ACC退出激活状态进入待激活状态,电子驻车制动EPB会自动启动4. 超车辅助。

LXY_LXY_的博客 1384

【中英双语】Illumina测序原理详解 | 边合成边测序/Sequencing by Synthesis

很多朋友们问我视频讲解时用的笔记可不可以分享,那当然必须是可以呐!但我当时其实没有好好记录,只是打了个草稿就开讲啦!既然大家有需求,俺就重新整理了一下,希望可以帮到大家!

weixin_43843918的博客 7870

【稳定婚姻问题】【HDU1435】【Stable Match】

2015/7/1 19:48

学习之路 3340

STM32+LoRa模块实战:从环境搭建到数据传输完整指南(附避坑清单)

本文提供STM32与LoRa模块从环境搭建到数据传输的完整实战指南,涵盖硬件连接、开发环境配置、AT指令设置、频段优化及低功耗设计等关键步骤,特别针对常见问题提供解决方案和避坑清单,助力物联网开发者高效实现远距离低功耗通信。

weixin_29168813的博客 289

HDU1435 Stable Match 【稳定婚姻问题】

HDU1435 简单的稳定婚姻问题,寒假写过了,又拿出来看辽一遍嘻嘻。 算法的理解注释里写的非常清楚辽。 稳定婚姻问题又被称作不想单身的渣男的脱单之路。——鲁迅 参考:【稳定婚姻问题】【HDU1435】【Stable Match】 #include<iostream> #include<cstring> #include<string.h> #i...

MaJorieL 439

避坑指南:STM32H7不同DMA控制器(MDMA/DMA2D/BDMA)到底该用哪个?

本文深入解析STM32H7系列芯片的DMA控制器选型策略,涵盖MDMA、DMA2D、BDMA等不同控制器的架构原理与性能对比。通过实际项目案例,提供高速TCM数据搬运、GUI加速、低功耗传输等场景的选型决策树,并分享性能优化与调试技巧,帮助工程师避开常见陷阱,提升系统效率。

weixin_26876073的博客 447

Python调用Google Trends官方数据接口实战指南

Google Trends作为全球最权威的搜索热度分析工具,其数据本质是公开、结构化、可编程访问的时序指标,而非需爬取的网页内容。其底层基于标准HTTP协议与JSON API交互,核心原理在于复现用户浏览器行为——通过/explore接口获取token,再凭token请求/widgetdata/multiline等端点获取归一化(0-100)时间序列数据。该技术路径规避了Selenium渲染依赖与非官方库的脆弱性,具备高稳定性、易调试、可监控等工程优势,广泛应用于竞品监测、内容选题验证、地域营销策略制定等业

weixin_29789925的博客 417

Stable Match 【HDU - 1435】【稳定婚姻系统】

题目链接 题意是中文的,但是却很难理解的说:我们给出C个(我在代码里用N来表示),有N个发射器和N个接收器,要求是让发射器与接收器达成稳定匹配,也就是稳定婚姻匹配问题了。 我们先把每个发射器到接收器的距离都处理出来,然后就是比较大小,然后婚姻匹配了(我这都没加上比较容量的,就过了)。 #include <iostream> #include <cstdio>...

既然弱小,就只顾变强就是了 275

IDC 数据中心工程师面试题汇总

(适用于:IDC运维、机房值班、机房工程师、机柜运维、IDC基础设施、IDC网络运维岗)

老韩的Linux云计算架构师进阶之路 1068

HDU 1435 Stable Match 【稳定婚姻问题】

<题目链接> 题目大意:给你n个发射站和n个接受站的位置,并且给出他们的容量,现在需要你对这n对站台进行匹配,距离越近的站台越稳定,如果两个站台距离相等,容量越大的越稳定。问你稳定匹配是什么,如果不存在的话,输出 "impposible "。 解题分析: Gale_Shapley的模板题,我们只需要分别预处理一下每个发射站对应接收站的优先级,以及每个接收站的所有发射站的优先度即...

weixin_30446197的博客 168

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

HDU 1435 Stable Match (稳定婚姻匹配)

题意:建立一个匹配表,使得一个发射点对应一个接收点,对于某一个发射点来说,它的接收点离它越近那么就会更稳定,同样对于接收点也是一样的情况。 匹配的目标是使得整个网络变得稳定。 对于某2个匹配,比如,( a ---- 1) ,(b----2) ,如果发射点a 离接收点2 比 1要近,而且2 也离 发射点a要比 b 近,那么 a 就很有可能把信号发到 2中,我们就说这个搭配是不稳定的。 而且每个点都有一个容量值,如果对于一个发射点到2个接收点的距离一样的话,它将首先选择容量大的那个。 题解:稳定婚姻匹配 让发射

gongyuandaye的博客 238

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

HDU 1435 Stable Match(稳定婚姻问题)

#include #include #include using namespace std; const int maxn=300+5; const double eps=1e-8; int pref[maxn][maxn],order[maxn][maxn],Next[maxn]; int future_husband[maxn],future_wife[maxn]; queue q; str

qq_33901573的博客 469

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

hdu - 1435 Stable Match 稳定婚姻问题、Gale-Shapley算法模板

稳定婚姻的描述:                 假如你是一个媒人,有若干个单身男子登门求助,还有同样多的单身女子也前来征婚。如果你已经知道这些女孩儿在每个男孩儿心目中的排名,以及男孩儿们在每个女孩儿心中的排名,你应该怎样为他们牵线配对呢?         最好的配对方案当然是,每个人的另一半正好都是自己的“第一选择”。这虽然很完美,但绝大多数情况下都不可能实现。比方说,男1号最喜欢的是女1号...

陌离将离 397

HDU 1435 Stable Match(稳定婚姻问题|盖尔沙普利算法)

题意: 标准的稳定匹配问题,具体的看刘汝佳的训练指南,很好理解,并不难,所以这题可以用来测板子。 代码:// // Created by CQU_CST_WuErli // Copyright (c) 2016 CQU_CST_WuErli. All rights reserved. // #include <iostream> #include <cstring> #include <c

只玩三国的程序猿的专栏 1581

HDU 1435 Stable Match

http://acm.hdu.edu.cn/showproblem.php?pid=1435#include #include #include #include #include #include #include using namespace std; #define N

ME4546的专栏 1702

稳定婚姻问题

假如你是一个媒人,有若干个单身男子登门求助,还有同样多的单身女子也前来征婚。如果你已经知道这些女孩在每个男人心目中的排名,以及男孩们在每个女孩心中的排名(1),你应该怎样为他们牵线配对呢? 最好的配对方案当然是,每个人的另一半正好都是自己的“第一选择”。这虽然很完美,但绝大多数情况下都不可能实现。比方说,男 1 号的最爱是女 1 号,而女 1 号的最爱不是男 1 号,这两个人的最佳选择就不

功不成身已退的博客 5279
上一篇: HDU 1530 Maximum Clique 最大团
下一篇: HDU 1522 Marriage is Stable 稳定婚姻问题 (再水一发)
_NMfloat_
博客等级 码龄12年 7粉丝 315原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值