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;
}

posted on 2017-07-31 09:14 mthoutai 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/mthoutai/p/7261396.html

POJ2536 Gopher II【二分图最大匹配】相关推荐

  1. Poj_2536 Gopher II -二分图建图

    题目:有m个洞,n知动物,每个洞容一知动物,问当天敌来后最少有多少知动物不能逃亡. 没看清楚最后的输出,被坑了几发 /***************************************** ...

  2. 二分图最大匹配 - 匈牙利算法

    问题描述: X集合(编号1~m),Y集合(编号m+1~n).n,m<100. 给出若干组合(x, y)(相当于映射x->y),问最都能同时有几个组合(分配). 分析: 题目可能简化描述得不 ...

  3. 解题报告 (九) 二分图最大匹配

    文章目录 二分图最大匹配 解题报告 一.最大匹配模板题 HDU 1083 Courses HDU 2063 过山车 HDU 1528 Card Game Cheater HDU 1179 Olliva ...

  4. 【网络流24题】解题报告:A、飞行员配对方案问题(最大流求二分图最大匹配)

    A.飞行员配对方案问题 (二分图最大匹配)(最大流)[提高+/省选- ] 题目链接 [问题分析] 二分图最大匹配问题. [建模方法] 在二分图的基础上增加源S和汇T. 1.S向X集合中每个顶点连一条容 ...

  5. 【模板】匈牙利算法 二分图最大匹配题模板

    [任务] 给定一个二分图,用匈牙利算法求这个二分图的最大匹配数. [说明] 求最大匹配,那么我们希望每一个在左边的点都尽量找到右边的一个点和它匹配. 我们一次枚举左边的点x的所有出边指向的点y, 若y ...

  6. 51nod 2006 飞行员配对(二分图最大匹配) 裸匈牙利算法 求二分图最大匹配题

    题目: 题目已经说了是最大二分匹配题, 查了一下最大二分匹配题有两种解法, 匈牙利算法和网络流. 看了一下觉得匈牙利算法更好理解, 然后我照着小红书模板打了一遍就过了. 匈牙利算法:先试着把没用过的左 ...

  7. 2021牛客多校3 - Minimum grid(二分图最大匹配-最大流)

    题目链接:点击查看 题目大意:给出一个 n∗nn*nn∗n 的棋盘,其中有 mmm 个位置是需要填数字的位置,每个位置需要填 [0,k][0,k][0,k] 的数字中的其中一个,可以重复,现在给出每一 ...

  8. HDU - 1054 Strategic Game(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:给出一棵树,现在要在节点上放置士兵,每个士兵可以监视与其所在的节点直接相连的节点,问最少需要多少个士兵才能将整棵树都监视到 题目分析:求最少的节点,以保证每条边都有一个端 ...

  9. HDU - 2389 Rain on your Parade(Hopcroft-Krap算法求二分图最大匹配)

    题目链接:点击查看 题目大意:给出n个人和m个雨伞,t分钟后就要下雨了,现在给出每个人的坐标和速度,以及雨伞所在的坐标,每个雨伞只能容纳一个人,题目问最多有多少个人能不被淋到 题目分析:二分图最大匹配 ...

  10. POJ - 2226 Muddy Fields(最小点覆盖-二分图最大匹配)

    题目链接:点击查看 题目大意:给出一个n*m的地图,地图中'*'代表泥地,'.'代表空地,现在我们有两种木板,一种可以覆盖一行中的任意长度,我们成为行木板,另一种可以覆盖一列中的任意长度,我们成为列木 ...

最新文章

  1. HarmonyOS Text超出部分末尾显示...
  2. vue全家桶 ---axios的使用和二次封装
  3. #16192董哥授课的CCNP交换部分总结(一)
  4. LINQ to SQL语句之Select/Distinct和Count/Sum/Min/Max/Avg - YJingLee's Blog - 博客园(转)
  5. echarts php 数据处理,PHP+echarts读取地图数据
  6. 关于ubuntu无法启动nginx的问题
  7. springboot2.0集成activiti modeler
  8. 计算机输入输出c语言,计算机等级考试二级C语言讲义第三讲输入输出函数
  9. 【报告分享】2020中国直播电商趋势洞察与运营指导报告.pdf(附下载链接)
  10. 030、JVM实战总结:G1分代回收原理深度图解:为什么回收性能比传统GC更好?
  11. Vue 开发环境显示log信息
  12. 狗屎的Easy UI ,链接页面出错!搞了我一上午!
  13. 【深度学习】你该会的精选面试题(一)
  14. android 点击屏幕事件_Android 事件分发机制
  15. Markdown笔记简明教程
  16. 4款开源中文分词系统。
  17. linux服务器中安装SVN,linux服务器安装svn并上传项目
  18. 使用wamp3.0.6安装LimeSurvey时报“参数默认值只能为NULL”错误的解决办法
  19. Nacos连接不上:Ignore the empty nacos configuration and get it based on dataId
  20. PyTorch深度学习(B站刘二大爷)第九讲作业 Otto Group Product Classification

热门文章

  1. Dubbo + Zookeeper入门初探(转载)
  2. 决策过程并举例_成本效益分析举例
  3. 计算机课用英语怎么说cute,cute英语怎么读
  4. c语言数组字节偏移,C语言数组中的地址偏移问题
  5. c#modbus tcp通讯助手开源_Modbus 调试助手的使用(一)
  6. SpringMCV结构
  7. 数字图像处理(五) 图像复原
  8. OUTLOOK新邮件到达提醒设置以及outlook最小化到托盘设置
  9. Springboot vue.js html 跨域 前后分离 Activiti6 shiro 权限
  10. leetcode第一刷_Merge Intervals