POJ 2536 Gopher II(二分图的最大匹配)
题目链接:http://poj.org/problem?id=2536
题意:已知有n仅仅老鼠的坐标,m个洞的坐标,老鼠的移动速度为V,S秒以后有一仅仅老鹰要吃老鼠,问有多少个老鼠被吃。
非常明晰,二分匹配,老鼠为X集合,洞为Y集合
思路:计算当前老鼠 Xi 到达洞 Yi 的时间(dis/v),假设小于S的话,则Xi与Yi联通,
被吃的老鼠数 = n - 最大匹配数
- #include <iostream>
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <algorithm>
- #include <math.h>
- #define init(a) memset(a,0,sizeof(a))
- #define PI acos(-1,0)
- using namespace std;
- const int maxn = 310;
- const int maxm = 100001;
- #define lson left, m, id<<1
- #define rson m+1, right, id<<1|1
- #define min(a,b) (a>b)?b:a
- #define max(a,b) (a>b)?a:b
- int n,m,s,v,ma[500][500];
- bool vis[500];
- int line[500];
- struct node
- {
- double x,y;
- };
- node g[300],h[300];
- int DFS(int u)
- {
- for(int v = 1;v<=m;v++)
- {
- if(!vis[v]&&ma[u][v])
- {
- vis[v]=1;
- if(line[v]==-1 || DFS(line[v]))
- {
- line[v] = u;
- return 1;
- }
- }
- }
- return 0;
- }
- int K_M()
- {
- memset(line,-1,sizeof(line));
- int ans=0;
- for(int i = 1;i<=n;i++)
- {
- init(vis);
- ans += DFS(i);
- }
- return ans;
- }
- int main()
- {
- while(scanf("%d%d%d%d",&n,&m,&s,&v)!=EOF)
- {
- init(ma);
- for(int i=1;i<=n;i++)
- {
- scanf("%lf%lf",&g[i].x,&g[i].y);
- }
- for(int i=1;i<=m;i++)
- {
- scanf("%lf%lf",&h[i].x,&h[i].y);
- }
- for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=m;j++)
- {
- 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));//老鼠与洞的距离
- if(dis / v <= (double)s)//老鼠到达洞的时间<S
- {
- ma[i][j] = 1;
- }
- }
- }
- int ans = K_M();
- printf("%d\n",n - ans);
- }
- return 0;
- }
POJ 2536 Gopher II(二分图的最大匹配)的更多相关文章
- poj 2536 Gopher II (二分匹配)
Gopher II Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6345 Accepted: 2599 Descrip ...
- POJ 2536 Gopher II
二分图的最大匹配 地鼠内部和地鼠洞内部都是没有边相连的,那么就可以看成一个二分图.地鼠如果可以跑到那个地鼠洞,就连一条边,然后跑二分图的最大匹配,最后地鼠的数量减去最大匹配数就是答案. #includ ...
- POJ 2536 Gopher II(二分图最大匹配)
题意: N只地鼠M个洞,每只地鼠.每个洞都有一个坐标. 每只地鼠速度一样,对于每只地鼠而言,如果它跑到某一个洞的所花的时间小于等于S,它才不会被老鹰吃掉. 规定每个洞最多只能藏一只地鼠. 问最少有多少 ...
- POJ 2536 Gopher II (ZOJ 2536) 二分图匹配
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1882 http://poj.org/problem?id=2536 题目大 ...
- POJ2536 Gopher II(二分图最大匹配)
Gopher II Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9005 Accepted: 3724 Descrip ...
- POJ 2584 T-Shirt Gumbo (二分图多重最大匹配)
题意 现在要将5种型号的衣服分发给n个参赛者,然后给出每个参赛者所需要的衣服的尺码的大小范围,在该尺码范围内的衣服该选手可以接受,再给出这5种型号衣服各自的数量,问是否存在一种分配方案使得每个选手都能 ...
- poj 1274(网络流解二分图的最大匹配)
The Perfect Stall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22539 Accepted: 100 ...
- [POJ 2536] Gopher ||
[题目链接] http://poj.org/problem?id=2536 [算法] 匈牙利算法解二分图最大匹配 [代码] #include <algorithm> #include &l ...
- poj 2536 GopherII(二分图匹配)
Description The gopher family, having averted the canine threat, must face a new predator. The are n ...
随机推荐
- 基于visual Studio2013解决面试题之0401非递归遍历二叉树
题目
- 数学之路-python计算实战(2)-初遇pypy
PyPy是Python开发人员为了更好的Hack Python创建的项目.此外,PyPy比CPython是更加灵活,易于使用和试验,以制定详细的功能在不同情况的实现方法,能够非常easy实施. 该项目 ...
- ZeroMQ:云计算时代最好的通讯库
还在学socket编程吗?还在研究为什么epoll比select更好吗? 噢,不必了! 在复杂的云计算环境中,我们面临的难题远比这个复杂得多. 庞大的服务器集群作为计算云,对来来看或许只是一个简单的搜 ...
- EditTex属性
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tool ...
- Lisp的永恒之道 好文
http://www.cnblogs.com/weidagang2046/archive/2012/06/03/tao_of_lisp.html
- android JNI处理图片的例子
android JNI处理图片的例子 原地址:http://blog.csdn.net/xjwangliang/article/details/7065670 <pre class=" ...
- 使用ffmpeg 对视频截图,和视频转换格式
//执行CMD命令方法 public static void CmdProcess(string command)//调用CMD { //实例化一个进程类 ...
- oracle存储过程、声明变量、for循环(转)
oracle存储过程.声明变量.for循环 1.创建存储过程 create or replace procedure test(var_name_1 in type,var_name_2 out ty ...
- dvtm: 平铺式终端管理器 — LinuxTOY
dvtm: 平铺式终端管理器 — LinuxTOY LinuxTOY 是一个致力于提供 Linux 相关资讯的专题站点.如果您发现了好用好玩的 Linux 东东并愿意发扬自由.分享的精神,可以点击顶部 ...
- ACM起步要点总结(转哈工大)
首先,我想说的就是,我是一个很普通的ACMer,高中没有参加过任何计算机和数学竞赛的经历,也没有ben那样过人的天资,努力至今也未能取得什么成绩,我之所以写下这篇文章,只是希望给刚进大学或者刚进ACM ...