简介

一般场景是男生和女生配对的问题,现有男生要去配对如果想去配对的女生已经有喜欢的男生了,那就让想去配对的女生已经喜欢的男生挪挪位置,看看想去配对的女生已经喜欢的男生能不能喜欢其他人,给现有配对的男生让一个位置。

有点绕。但是就是这样。

参考链接

https://www.bilibili.com/video/BV1Wx411L7Di?from=search&seid=16983503622667189725

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

code 对应 hdoj 2063

/*
7
1 1
1 2
2 2
2 3
3 1
3 2
4 3
*/ #include <map>
#include <stack>
#include <queue>
#include <cmath>
#include <vector>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std;
const int maxn = 510; /**************************************************
@brief : used 表示男生的某一次访问过程中女生有没有被匹配到
nxt 表示女生喜欢的男生
@author : none
@input :none
@output :none
@time : none
**************************************************/
int line[maxn][maxn], used[maxn], nxt[maxn];
int t, n, m, u, v; /**************************************************
@brief : 男生配对
@author : none
@input :none
@output :none
@time : none
**************************************************/
bool Find(int x) {
for (int i = 1; i <= m; i++) { // m 个女生
if (line[x][i] && !used[i]) { // x 和 i 是互相喜欢的,并且这个妹子名花无主
used[i] = 1;// 表示这个妹子配对上
if (nxt[i] == 0 || Find(nxt[i])) {
// 如果这个妹子没有匹配上人 或者 这个男生可以喜欢别人
nxt[i] = x;// i 个女生就和 x 配对上
return true;
}
}
}
return false;
} /**************************************************
@brief : 匹配算法
@author : none
@input :none
@output :none
@time : none
**************************************************/
int match() {
int sum = 0;
for (int i = 1; i <= n; i++) {// n 男生的个数
memset(used, 0, sizeof(used));
if (Find(i)) sum++; // 寻找匹配的妹子
}
return sum;
} int main() {
ios::sync_with_stdio(false);
while (cin >> t && t) {
cin >> n >> m;
memset(nxt, 0, sizeof(nxt));
memset(line, 0, sizeof(line));
while (t--) {
cin >> u >> v;
line[u][v] = 1;
}
cout << match() << endl;
}
// system("pause");
}

深入思考

能不能用这个C++算法解决下面的问题,下面数据说明 越接近0 表示小姐姐越想去上班,1表示小姐姐那天有事儿不能去上班。

https://www.cnblogs.com/eat-too-much/p/13409628.html

TIPS

上面的是多解法,有多个答案,让总体的小姐姐上班开心数值最大也就是总和数值(上班心情值)最小。

匈牙利算法C++实现的更多相关文章

  1. ACM/ICPC 之 机器调度-匈牙利算法解最小点覆盖集(DFS)(POJ1325)

    //匈牙利算法-DFS //求最小点覆盖集 == 求最大匹配 //Time:0Ms Memory:208K #include<iostream> #include<cstring&g ...

  2. 匈牙利算法——S.B.S.

    匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最 ...

  3. 匈牙利算法与KM算法

    匈牙利算法 var i,j,k,l,n,m,v,mm,ans:longint; a:..,..]of longint; p,f:..]of longint; function xyl(x,y:long ...

  4. HDU1054 Strategic Game——匈牙利算法

    Strategic Game Bob enjoys playing computer games, especially strategic games, but sometimes he canno ...

  5. poj1274(匈牙利算法)

    The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22809   Accepted: 101 ...

  6. 匈牙利 算法&模板

    匈牙利 算法 一. 算法简介 匈牙利算法是由匈牙利数学家Edmonds于1965年提出.该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法. 二分图的定义: 设G=(V,E)是一个 ...

  7. 【入门】匈牙利算法+HNOI2006 hero超级英雄

    一.关于匈牙利算法 匈牙利算法是由匈牙利数学家Edmonds提出的,用增广路径求二分图最大匹配的算法. 听起来高端,其实说白了就是: 假设不存在单相思(单身狗偷偷抹眼泪),在一个同性恋不合法的国家里( ...

  8. [ACM_图论] The Perfect Stall 完美的牛栏(匈牙利算法、最大二分匹配)

    描述 农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术.不幸的是,由于工程问题,每个牛栏都不一样.第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来:每头奶牛都只愿意在她们 ...

  9. UESTC 919 SOUND OF DESTINY --二分图最大匹配+匈牙利算法

    二分图最大匹配的匈牙利算法模板题. 由题目易知,需求二分图的最大匹配数,采取匈牙利算法,并采用邻接表来存储边,用邻接矩阵会超时,因为邻接表复杂度O(nm),而邻接矩阵最坏情况下复杂度可达O(n^3). ...

  10. Poj(1466),最大独立集,匈牙利算法

    题目链接:http://poj.org/problem?id=1466 Girls and Boys Time Limit: 5000MS   Memory Limit: 10000K Total S ...

随机推荐

  1. Visual Studio 2022 划词翻译插件!该插件可以方便地翻译变量名、类名、方法名等单词,帮助您更轻松地理解和使用代码。

    EnTranslate一款简单的划词翻译插件 简介 支持划词翻译(鼠标悬浮到单词上方将自动翻译) 支持播放单词发音 支持调用在线接口翻译 强大的单词拆分能力: 支持驼峰, 下划线形式等各种单词拆分 丰 ...

  2. php-ffmpeg保存为.mp4格式时报错

     原文: php-ffmpeg保存为.mp4格式时报错:FFMpeg\Exception\RuntimeException: Encoding failed in - 搜栈网 (seekstack.c ...

  3. thinkphp mysql 使用IN 条件

    今天使用thinkphp  whrere  in条件查询 数据库是 ,我需要搜索入参  110000  一个字段 ,但是thinkphp 为了效率直接把  in条件转成  = 解决方法 FIND_IN ...

  4. TypeScript+Vue3

    TypeScript Any 类型 和 unknown 顶级类型 1.没有强制限定哪种类型,随时切换类型都可以 我们可以对 any 进行任何操作,不需要检查类型 2.声明变量的时候没有指定任意类型默认 ...

  5. JS 上下文 this 指向总结

    这个 js 语言中的 this 和其他面向对象的语言有本质的不同, 也更复杂, 它更多取决于函数在不同场景下的调用方式, 要理解它并总结出它的规律的话, 优先要从上下文 这个概念认知说起. 理解上下文 ...

  6. RAG越来越不准?你可能忽略了“元数据”的力量

    你是否也有这样的困扰? 问大模型一个很具体的问题:"请告诉我A软件的安装方法." 结果它却信誓旦旦地告诉了你B软件的安装步骤. 在这个过程中,你可能已经花了大量时间解析和清洗上千份 ...

  7. 通过DirectXTK,将.obj,.fbx,.dae,等常见三维格式,转换为.cmo格式

    (1)下载DirectXTK项目:https://github.com/microsoft/DirectXTK (2)VS 打开该项目,右键项目,生成依赖性-自定义 (3)勾选MeshContentT ...

  8. 第一次blog作业

    1.前言  刚接触面向对象程序设计和开始学习Java编程语言的时候,确实觉得所有的一切都很困难,所有的一切都很陌生.面对全新的概念和编程方式,感觉自己像是进入了一个完全陌生的领域,需要从头开始探索.那 ...

  9. 参加 Hugging Face 组织的 Gradio & MCP 智能体主题黑客松

    欢迎参加 Gradio & MCP 智能体主题黑客松! 准备好了吗?一场以智能体(Agent)和模型上下文协议(Model Context Protocol,简称 MCP)为核心的全球在线黑客 ...

  10. 面试题|Spring中BeanFactory与ApplicationContext的本质区别和作用

      BeanFactory 是Bean工厂,是Spring 框架最核心的接口,它提供了高级IoC 的配置机制.如果说BeanFactory是Spring的心脏,那么应用上下文ApplicationCo ...