题目链接:http://poj.org/problem?id=2536

题意:已知有n仅仅老鼠的坐标,m个洞的坐标,老鼠的移动速度为V,S秒以后有一仅仅老鹰要吃老鼠,问有多少个老鼠被吃。

非常明晰,二分匹配,老鼠为X集合,洞为Y集合

思路:计算当前老鼠 Xi 到达洞 Yi 的时间(dis/v),假设小于S的话,则Xi与Yi联通,

被吃的老鼠数 = n - 最大匹配数

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <cstring>
  5. #include <algorithm>
  6. #include <math.h>
  7. #define init(a) memset(a,0,sizeof(a))
  8. #define PI acos(-1,0)
  9. using namespace std;
  10. const int maxn = 310;
  11. const int maxm = 100001;
  12. #define lson left, m, id<<1
  13. #define rson m+1, right, id<<1|1
  14. #define min(a,b) (a>b)?b:a
  15. #define max(a,b) (a>b)?a:b
  16.  
  17. int n,m,s,v,ma[500][500];
  18. bool vis[500];
  19. int line[500];
  20. struct node
  21. {
  22. double x,y;
  23. };
  24. node g[300],h[300];
  25.  
  26. int DFS(int u)
  27. {
  28. for(int v = 1;v<=m;v++)
  29. {
  30. if(!vis[v]&&ma[u][v])
  31. {
  32. vis[v]=1;
  33. if(line[v]==-1 || DFS(line[v]))
  34. {
  35. line[v] = u;
  36. return 1;
  37. }
  38. }
  39. }
  40. return 0;
  41. }
  42. int K_M()
  43. {
  44. memset(line,-1,sizeof(line));
  45. int ans=0;
  46. for(int i = 1;i<=n;i++)
  47. {
  48. init(vis);
  49. ans += DFS(i);
  50. }
  51. return ans;
  52. }
  53. int main()
  54. {
  55. while(scanf("%d%d%d%d",&n,&m,&s,&v)!=EOF)
  56. {
  57. init(ma);
  58. for(int i=1;i<=n;i++)
  59. {
  60. scanf("%lf%lf",&g[i].x,&g[i].y);
  61. }
  62. for(int i=1;i<=m;i++)
  63. {
  64. scanf("%lf%lf",&h[i].x,&h[i].y);
  65. }
  66. for(int i=1;i<=n;i++)
  67. {
  68. for(int j=1;j<=m;j++)
  69. {
  70. double dis = sqrt((h[j].x-g[i].x)*(h[j].x-g[i].x)+(h[j].y-g[i].y)*(h[j].y-g[i].y));//老鼠与洞的距离
  71.  
  72. if(dis / v <= (double)s)//老鼠到达洞的时间<S
  73. {
  74. ma[i][j] = 1;
  75. }
  76. }
  77. }
  78. int ans = K_M();
  79. printf("%d\n",n - ans);
  80. }
  81. return 0;
  82. }

POJ 2536 Gopher II(二分图的最大匹配)的更多相关文章

  1. poj 2536 Gopher II (二分匹配)

    Gopher II Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6345   Accepted: 2599 Descrip ...

  2. POJ 2536 Gopher II

    二分图的最大匹配 地鼠内部和地鼠洞内部都是没有边相连的,那么就可以看成一个二分图.地鼠如果可以跑到那个地鼠洞,就连一条边,然后跑二分图的最大匹配,最后地鼠的数量减去最大匹配数就是答案. #includ ...

  3. POJ 2536 Gopher II(二分图最大匹配)

    题意: N只地鼠M个洞,每只地鼠.每个洞都有一个坐标. 每只地鼠速度一样,对于每只地鼠而言,如果它跑到某一个洞的所花的时间小于等于S,它才不会被老鹰吃掉. 规定每个洞最多只能藏一只地鼠. 问最少有多少 ...

  4. POJ 2536 Gopher II (ZOJ 2536) 二分图匹配

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1882 http://poj.org/problem?id=2536 题目大 ...

  5. POJ2536 Gopher II(二分图最大匹配)

    Gopher II Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9005   Accepted: 3724 Descrip ...

  6. POJ 2584 T-Shirt Gumbo (二分图多重最大匹配)

    题意 现在要将5种型号的衣服分发给n个参赛者,然后给出每个参赛者所需要的衣服的尺码的大小范围,在该尺码范围内的衣服该选手可以接受,再给出这5种型号衣服各自的数量,问是否存在一种分配方案使得每个选手都能 ...

  7. poj 1274(网络流解二分图的最大匹配)

    The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22539   Accepted: 100 ...

  8. [POJ 2536] Gopher ||

    [题目链接] http://poj.org/problem?id=2536 [算法] 匈牙利算法解二分图最大匹配 [代码] #include <algorithm> #include &l ...

  9. poj 2536 GopherII(二分图匹配)

    Description The gopher family, having averted the canine threat, must face a new predator. The are n ...

随机推荐

  1. 基于visual Studio2013解决面试题之0401非递归遍历二叉树

     题目

  2. 数学之路-python计算实战(2)-初遇pypy

    PyPy是Python开发人员为了更好的Hack Python创建的项目.此外,PyPy比CPython是更加灵活,易于使用和试验,以制定详细的功能在不同情况的实现方法,能够非常easy实施. 该项目 ...

  3. ZeroMQ:云计算时代最好的通讯库

    还在学socket编程吗?还在研究为什么epoll比select更好吗? 噢,不必了! 在复杂的云计算环境中,我们面临的难题远比这个复杂得多. 庞大的服务器集群作为计算云,对来来看或许只是一个简单的搜 ...

  4. EditTex属性

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tool ...

  5. Lisp的永恒之道 好文

    http://www.cnblogs.com/weidagang2046/archive/2012/06/03/tao_of_lisp.html

  6. android JNI处理图片的例子

    android JNI处理图片的例子 原地址:http://blog.csdn.net/xjwangliang/article/details/7065670 <pre class=" ...

  7. 使用ffmpeg 对视频截图,和视频转换格式

    //执行CMD命令方法 public static void CmdProcess(string command)//调用CMD        {            //实例化一个进程类      ...

  8. oracle存储过程、声明变量、for循环(转)

    oracle存储过程.声明变量.for循环 1.创建存储过程 create or replace procedure test(var_name_1 in type,var_name_2 out ty ...

  9. dvtm: 平铺式终端管理器 — LinuxTOY

    dvtm: 平铺式终端管理器 — LinuxTOY LinuxTOY 是一个致力于提供 Linux 相关资讯的专题站点.如果您发现了好用好玩的 Linux 东东并愿意发扬自由.分享的精神,可以点击顶部 ...

  10. ACM起步要点总结(转哈工大)

    首先,我想说的就是,我是一个很普通的ACMer,高中没有参加过任何计算机和数学竞赛的经历,也没有ben那样过人的天资,努力至今也未能取得什么成绩,我之所以写下这篇文章,只是希望给刚进大学或者刚进ACM ...