题意:
     有n只老鼠,m个洞,每个洞最多可以藏一只老鼠,每个老鼠的移动速度都是v,给你他们的当前坐标,和洞的坐标,突然老鹰来了,他们必须在s秒内跑到一个洞藏起来,问你最少有多少只老鼠被抓走了。

思路:

      二分图匹配裸题,关键就是那句一个洞最多容一只老鼠,对于每个老鼠连接能在s秒内到达的所有洞,然后一边最大匹配,得到的就是最大的藏起来的老鼠sum,输出n - sum就是最少的被抓走的老鼠。


#include<stdio.h>
#include<math.h>
#include<string.h>#define N_node 100 + 10
#define N_edge 10000 + 100typedef struct
{int to ,next;
}STAR;typedef struct
{double x ,y;
}NODE;STAR E[N_edge];
NODE node1[N_node] ,node2[N_node];
int list[N_node] ,tot;
int mk_dfs[N_node] ,mk_gx[N_node];void add(int a ,int b)
{E[++tot].to = b;E[tot].next = list[a];list[a] = tot;
}double dis(NODE a ,NODE b)
{double tmp = (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y);return sqrt(tmp);
}int DFS_XYL(int s)
{for(int k = list[s] ;k; k = E[k].next){int to = E[k].to;if(mk_dfs[to]) continue;mk_dfs[to] = 1;if(mk_gx[to] == -1 || DFS_XYL(mk_gx[to])){mk_gx[to] = s;return 1;}}return 0;
}int main ()
{int n ,m ,i ,j;double s ,v;while(~scanf("%d %d %lf %lf" ,&n ,&m ,&s ,&v)){for(i = 1 ;i <= n ;i ++)scanf("%lf %lf" ,&node1[i].x ,&node1[i].y);for(i = 1 ;i <= m ;i ++)scanf("%lf %lf" ,&node2[i].x ,&node2[i].y);memset(list ,0 ,sizeof(list));tot = 1;for(i = 1 ;i <= n ;i ++)for(j = 1 ;j <= m ;j ++){if(dis(node1[i],node2[j]) / v <= s)add(i ,j);}memset(mk_gx ,255 ,sizeof(mk_gx));int sum = 0;for(i = 1 ;i <= n ;i ++){memset(mk_dfs ,0 ,sizeof(mk_dfs));sum += DFS_XYL(i);}printf("%d\n" ,n - sum);}return 0;
}

  

POJ2536 二分图匹配相关推荐

  1. Dinic二分图匹配 || Luogu P3386

    题面:[模板]二分图匹配 思路:Dinic实现二分图匹配,要建一个超级源点(S)和超级汇点(T),分别定为N+M+1和N+M+2 然后S去和N中的数建正边和反边,正边权值为1,反边权值为0:M中的数去 ...

  2. 二分图匹配匈牙利算法DFS实现

    1 /*==================================================*\ 2 | 二分图匹配(匈牙利算法DFS 实现) 3 | INIT: g[][]邻接矩阵; ...

  3. poj1274(二分图匹配)

    (一道基础的二分图匹配) 题目意思大概为N个牛和M个栅栏,一个牛和一个栅栏只能匹配一次,求最大匹配 直接套用二分图最大匹配模板即可 #include <iostream> #include ...

  4. poj2724(二分图匹配)

    题目大概意思为有部分奶酪需要处理,若两个奶酪的二进制只有一位不同,则可以一起处理,问最少需要处理几次 题目思路: 将可以一起处理的两个奶酪用边连接在一起,相当于边只连接二进制中有偶数个1的奶酪和二进制 ...

  5. 算法模板——二分图匹配

    实现功能为二分图匹配 原理:匈牙利算法,核心思想--匹配上了就配,没直接匹配上也要通过前面的腾出位置让这个匹配上(详见:趣写算法系列之--匈牙利算法) 本程序以Codevs2776为例 详见Codev ...

  6. 算法:ACM二分图匹配 HDU2063

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2063 摘录于互联网,原创作者redraiment,很详细的二分图匹配入门资料! 2063 过山车 Pr ...

  7. BZOJ1433 [ZJOI2009]假期的宿舍 - 二分图匹配

    题解 一道裸的二分图匹配,稍微有一点细节需要注意, 但是非常裸= = 本校并且住校的向自己的床和 自己认识的并且本校的人的床连边 离校的不需要向外连边 不是本校的就和自己认识的 并且是本校的人的床连边 ...

  8. URAL 1721 Two Sides of the Same Coin(二分图匹配,输出匹配对象)

    题意:给出n个人的信息,名字.特征.排名. 在排名相差2的前提下,特征为testdata可以与特征为statements的组队,特征为anything可以任何一人组队: 求最多匹配对数,并将每队名字输 ...

  9. zoj3988 二分图匹配

    给一个数组,对于每两个数加起来为素数那么就是一个集合,求不超过k个集合的最多数是多少 解法:二分图匹配,先打素数筛,预处理边集,匹配完之后分两种情况k>匹配数,那么可以直接输出匹配数*2,否则可 ...

最新文章

  1. To handle Unhandled Exception
  2. 详解神秘Linux内核
  3. git报错: LF will be replaced by CRLF
  4. saltui试用遇到的问题
  5. WPFWCFWF打造HelloWorld程序
  6. C++ Primer ----- 关于初始化
  7. Spring测试上下文缓存+ AspectJ @Transactional + Ehcache的痛苦
  8. jquery点击非div区域隐藏div
  9. Python 计算文件夹大小、文件大小
  10. Python - 遍历列表时删除元素的正确做法
  11. codepage IMLangCodePages
  12. 如果华为自研的芯片无法给华为手机带来更高的性价比,那么华为自研芯片给消费者带来的意义是什么呢?
  13. win10微信卡顿_WIN10下微信崩溃(已经是最新版)的解决方法
  14. mac 批量更改文件后缀名
  15. java sftp 读取文件_Java代码获取SFTP服务器文件
  16. STKO助力OpenSEES系列:结构模态分析以及动力特性(MDOF与等效SDOF验证)
  17. matlab GUIz之guide
  18. officeXP打开docx文档的方法
  19. CentOS 开启端口
  20. Flutter 数据持久化

热门文章

  1. Linux系统简介 、 安装Linux系统 、 RHEL6基本操作
  2. 【Unity技巧】制作一个简单的NPC
  3. ASP.NET 获取客户端IP (无视代理)
  4. 弹性盒子 flex-direction
  5. opencv imshow
  6. Python进阶-----类的继承顺序
  7. 关于js里的document.compatmode
  8. YII 测试环境搭建
  9. struts2 不返回result的做法
  10. 连续处理函数reduce