POJ2536 Gopher II【二分图最大匹配】
题目链接:
http://poj.org/problem?
id=2536
题目大意:
有N仅仅鼹鼠和M个洞穴,假设鼹鼠在S秒内不可以跑到洞穴,就会被老鹰捉住吃掉。
鼹鼠跑的速度为V米/秒。
已知一个洞穴仅仅能容纳一仅仅鼹鼠。给你鼹鼠和洞穴的坐标,那么问题来了:问最少有多少仅仅鼹鼠被老鹰捉住
吃掉。
思路:
建立一个二分图,一边为鼹鼠,还有一边为洞穴枚举求出每仅仅鼹鼠到各个洞穴的距离,把可以在S秒内跑到该
洞穴(距离<=S*V)的进行连边。建好图后用匈牙利算法求出最多有多少仅仅鼹鼠可以幸免于难( MaxMatch() ),
那么剩下的N - MaxMatch()就是最少有多少仅仅鼹鼠被老鹰捉住吃掉。
AC代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;int N,M,S,V;struct Node
{double x;double y;
}PA[330],PB[330];int Map[330][330];
bool Mask[330];
int cx[330],cy[330];int FindPath(int u)
{for(int i = 1; i <= M; ++i){if(Map[u][i] && !Mask[i]){Mask[i] = 1;if(cy[i] == -1 || FindPath(cy[i])){cy[i] = u;cx[u] = i;return 1;}}}return 0;
}int MaxMatch()
{int res = 0;for(int i = 1; i <= N; ++i)cx[i] = -1;for(int i = 1; i <= M; ++i)cy[i] = -1;for(int i = 1; i <= N; ++i){if(cx[i] == -1){for(int j = 1; j <= M; ++j)Mask[j] = 0;res += FindPath(i);}}return res;
}int main()
{while(~scanf("%d%d%d%d",&N,&M,&S,&V)){for(int i = 1; i <= N; ++i)scanf("%lf%lf",&PA[i].x,&PA[i].y);for(int i = 1; i <= M; ++i)scanf("%lf%lf",&PB[i].x,&PB[i].y);memset(Map,0,sizeof(Map));for(int i = 1; i <= N; ++i){for(int j = 1; j <= M; ++j){double x = PA[i].x - PB[j].x;double y = PA[i].y - PB[j].y;if(x*x+y*y <= S*V*S*V)Map[i][j] = 1;}}printf("%d\n",N-MaxMatch());}return 0;
}
转载于:https://www.cnblogs.com/mthoutai/p/7261396.html
POJ2536 Gopher II【二分图最大匹配】相关推荐
- Poj_2536 Gopher II -二分图建图
题目:有m个洞,n知动物,每个洞容一知动物,问当天敌来后最少有多少知动物不能逃亡. 没看清楚最后的输出,被坑了几发 /***************************************** ...
- 二分图最大匹配 - 匈牙利算法
问题描述: X集合(编号1~m),Y集合(编号m+1~n).n,m<100. 给出若干组合(x, y)(相当于映射x->y),问最都能同时有几个组合(分配). 分析: 题目可能简化描述得不 ...
- 解题报告 (九) 二分图最大匹配
文章目录 二分图最大匹配 解题报告 一.最大匹配模板题 HDU 1083 Courses HDU 2063 过山车 HDU 1528 Card Game Cheater HDU 1179 Olliva ...
- 【网络流24题】解题报告:A、飞行员配对方案问题(最大流求二分图最大匹配)
A.飞行员配对方案问题 (二分图最大匹配)(最大流)[提高+/省选- ] 题目链接 [问题分析] 二分图最大匹配问题. [建模方法] 在二分图的基础上增加源S和汇T. 1.S向X集合中每个顶点连一条容 ...
- 【模板】匈牙利算法 二分图最大匹配题模板
[任务] 给定一个二分图,用匈牙利算法求这个二分图的最大匹配数. [说明] 求最大匹配,那么我们希望每一个在左边的点都尽量找到右边的一个点和它匹配. 我们一次枚举左边的点x的所有出边指向的点y, 若y ...
- 51nod 2006 飞行员配对(二分图最大匹配) 裸匈牙利算法 求二分图最大匹配题
题目: 题目已经说了是最大二分匹配题, 查了一下最大二分匹配题有两种解法, 匈牙利算法和网络流. 看了一下觉得匈牙利算法更好理解, 然后我照着小红书模板打了一遍就过了. 匈牙利算法:先试着把没用过的左 ...
- 2021牛客多校3 - Minimum grid(二分图最大匹配-最大流)
题目链接:点击查看 题目大意:给出一个 n∗nn*nn∗n 的棋盘,其中有 mmm 个位置是需要填数字的位置,每个位置需要填 [0,k][0,k][0,k] 的数字中的其中一个,可以重复,现在给出每一 ...
- HDU - 1054 Strategic Game(最小点覆盖-二分图最大匹配)
题目链接:点击查看 题目大意:给出一棵树,现在要在节点上放置士兵,每个士兵可以监视与其所在的节点直接相连的节点,问最少需要多少个士兵才能将整棵树都监视到 题目分析:求最少的节点,以保证每条边都有一个端 ...
- HDU - 2389 Rain on your Parade(Hopcroft-Krap算法求二分图最大匹配)
题目链接:点击查看 题目大意:给出n个人和m个雨伞,t分钟后就要下雨了,现在给出每个人的坐标和速度,以及雨伞所在的坐标,每个雨伞只能容纳一个人,题目问最多有多少个人能不被淋到 题目分析:二分图最大匹配 ...
- POJ - 2226 Muddy Fields(最小点覆盖-二分图最大匹配)
题目链接:点击查看 题目大意:给出一个n*m的地图,地图中'*'代表泥地,'.'代表空地,现在我们有两种木板,一种可以覆盖一行中的任意长度,我们成为行木板,另一种可以覆盖一列中的任意长度,我们成为列木 ...
最新文章
- HarmonyOS Text超出部分末尾显示...
- vue全家桶 ---axios的使用和二次封装
- #16192董哥授课的CCNP交换部分总结(一)
- LINQ to SQL语句之Select/Distinct和Count/Sum/Min/Max/Avg - YJingLee's Blog - 博客园(转)
- echarts php 数据处理,PHP+echarts读取地图数据
- 关于ubuntu无法启动nginx的问题
- springboot2.0集成activiti modeler
- 计算机输入输出c语言,计算机等级考试二级C语言讲义第三讲输入输出函数
- 【报告分享】2020中国直播电商趋势洞察与运营指导报告.pdf(附下载链接)
- 030、JVM实战总结:G1分代回收原理深度图解:为什么回收性能比传统GC更好?
- Vue 开发环境显示log信息
- 狗屎的Easy UI ,链接页面出错!搞了我一上午!
- 【深度学习】你该会的精选面试题(一)
- android 点击屏幕事件_Android 事件分发机制
- Markdown笔记简明教程
- 4款开源中文分词系统。
- linux服务器中安装SVN,linux服务器安装svn并上传项目
- 使用wamp3.0.6安装LimeSurvey时报“参数默认值只能为NULL”错误的解决办法
- Nacos连接不上:Ignore the empty nacos configuration and get it based on dataId
- PyTorch深度学习(B站刘二大爷)第九讲作业 Otto Group Product Classification
热门文章
- Dubbo + Zookeeper入门初探(转载)
- 决策过程并举例_成本效益分析举例
- 计算机课用英语怎么说cute,cute英语怎么读
- c语言数组字节偏移,C语言数组中的地址偏移问题
- c#modbus tcp通讯助手开源_Modbus 调试助手的使用(一)
- SpringMCV结构
- 数字图像处理(五) 图像复原
- OUTLOOK新邮件到达提醒设置以及outlook最小化到托盘设置
- Springboot vue.js html 跨域 前后分离 Activiti6 shiro 权限
- leetcode第一刷_Merge Intervals