题目链接:

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

POJ2536 Gopher II【二分图最大匹配】的更多相关文章

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

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

  2. 2018.07.06 POJ2536 Gopher II(二分图匹配)

    Gopher II Time Limit: 2000MS Memory Limit: 65536K Description The gopher family, having averted the ...

  3. 无题 II 二分图最大匹配

    题目描述 这是一个简单的游戏,在一个n*n的矩阵中,找n个数使得这n个数都在不同的行和列里并且要求这n个数中的最大值和最小值的差值最小. Input 输入一个整数T表示T组数据. 对于每组数据第一行输 ...

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

    Gopher II Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6675   Accepted: 2732 Descrip ...

  5. 二分图最大匹配(匈牙利算法) UVA 10080 Gopher II

    题目传送门 /* 匈牙利算法:这题比UVA_670简单,注意是要被吃的鼠的最少个数,套模板 */ #include <cstdio> #include <algorithm> ...

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

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

  7. POJ2536(二分图最大匹配)

    Gopher II Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8504   Accepted: 3515 Descrip ...

  8. POJ 2226二分图最大匹配

    匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是二部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图 ...

  9. POJ2239 Selecting Courses(二分图最大匹配)

    题目链接 N节课,每节课在一个星期中的某一节,求最多能选几节课 好吧,想了半天没想出来,最后看了题解是二分图最大匹配,好弱 建图: 每节课 与 时间有一条边 #include <iostream ...

随机推荐

  1. 在 Flask 项目中解决 CSRF 攻击

    #转载请留言联系 1. CSRF是什么? CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造. CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求.包括:以你名义 ...

  2. hdu 1102(最小生成树)

    Constructing Roads Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  3. myeclipse10.7配置resin4.0.36

    Resin-4.0.35 (built Tue, 12 Feb 2013 10:05:50 PST) Copyright(c) 1998-2012 Caucho Technology.  All ri ...

  4. JS基础用法-向数组指定位置插入对象

    在做省市区三级联动的时候,需要在省市区默认位置放上请选择字样. 由于后台的API接口返回的没有请选择字样,那么就需要给返回的数组手动增加请选择 代码如下 // 原来的数组 var array = [& ...

  5. UVALive(LA) 3644 X-Plosives (并查集)

    题意: 有一些简单化合物,每个化合物都由两种元素组成的,你是一个装箱工人.从实验员那里按照顺序把一些简单化合物装到车上,但这里存在安全隐患:如果车上存在K个简单化合物,正好包含K种元素,那么他们就会组 ...

  6. (转) view视图的放大、缩小、旋转

    控件移动,放大,缩小,旋转 1,代码添加控件 例如: /* 1.创建一个控件 2.设置控件的位置,大小 3.设置控件所需要的各个属性 4.添加入父控件 5.添加监听 */ UIButton *btn1 ...

  7. MySQL类型转换 使用CAST将varchar转换成int类型排序

    --使用CAST将varchar转换成int类型排序 select distinct(zone_id) from guild_rank_info order by CAST(zone_id as SI ...

  8. mysql的load data,高速将文本文件,插入数据库中

    1语法 LOAD DATA [ LOW_PRIORITY | CONCURRENT ] [ LOCAL ] INFILE 'file_name.txt' [ REPLACE | IGNORE ] IN ...

  9. LAMP----linux+apache+mysql+php详细安装步骤之一APACHE篇(openldap等)

    LAMP----linux+apache+mysql+php详细安装步骤之一APACHE篇(openldap等) linux详细版本为RHEL5.3 [root@localhost mail]# un ...

  10. Xcode 5 单元测试(一)使用XCTest进行单元测试

    在Objc.io #1的Testing View Controllers中讲解的就是单元测试的相关内容.本文说下如何通过Xcode 5中集成的XCTest框架进行简单的单元测试. 什么是单元测试 首先 ...