hdu 2389(最大匹配bfs版)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2389
思路:纯裸的一个最大匹配题,不过悲摧的是以前一直用的dfs版一直过不了,TLE无数次啊,然后改成bfs就过了。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
#include<queue>
using namespace std;
#define MAXN 3333
vector<int>map[MAXN];
int ly[MAXN],lx[MAXN];
int distx[MAXN],disty[MAXN];
int n,m;
struct Node {
int x,y,s;
} p[MAXN];
struct Point {
int x,y;
} q[MAXN]; bool bfs()
{
bool flag=false;
memset(distx,,(n+)*sizeof(int));
memset(disty,,(n+)*sizeof(int));
queue<int>Q;
for(int i=; i<=n; i++) {
if(lx[i]==-)Q.push(i);
}
while(!Q.empty()) {
int u=Q.front();
Q.pop();
for(int i=; i<map[u].size(); i++) {
int v=map[u][i];
if(disty[v]==) {
disty[v]=distx[u]+;
if(ly[v]==-)flag=true;
else {
distx[ly[v]]=disty[v]+;
Q.push(ly[v]);
}
}
}
}
return flag;
} int dfs(int u)
{
for(int i=; i<map[u].size(); i++) {
int v=map[u][i];
if(disty[v]==distx[u]+) {
disty[v]=;
if(ly[v]==-||dfs(ly[v])) {
ly[v]=u;
lx[u]=v;
return ;
}
}
}
return ;
} int MaxMatch()
{
int res=;
memset(lx,-,(n+)*sizeof(lx[]));
memset(ly,-,(n+)*sizeof(ly[]));
while(bfs()) {
for(int i=; i<=n; i++) {
if(lx[i]==-)res+=dfs(i);
}
}
return res;
} int main()
{
// freopen("1.txt","r",stdin);
int _case,time,t=;
scanf("%d",&_case);
while(_case--) {
scanf("%d%d",&time,&n);
for(int i=; i<=n; i++)map[i].clear();
for(int i=; i<=n; i++) {
scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].s);
}
scanf("%d",&m);
for(int i=; i<=m; i++) {
scanf("%d%d",&q[i].x,&q[i].y);
}
for(int i=; i<=n; i++) {
for(int j=; j<=m; j++) {
double xx=(p[i].x-q[j].x)*(p[i].x-q[j].x)*1.0;
double yy=(p[i].y-q[j].y)*(p[i].y-q[j].y)*1.0;
double dd=sqrt(xx+yy);
if(dd<=1.0*time*p[i].s)map[i].push_back(j);
}
}
int ans=MaxMatch();
printf("Scenario #%d:\n%d\n",t++,ans);
puts("");
}
return ;
}
hdu 2389(最大匹配bfs版)的更多相关文章
- HDU 2389 Rain on your Parade / HUST 1164 4 Rain on your Parade(二分图的最大匹配)
HDU 2389 Rain on your Parade / HUST 1164 4 Rain on your Parade(二分图的最大匹配) Description You're giving a ...
- HDU 2389 ——Rain on your Parade——————【Hopcroft-Karp求最大匹配、sqrt(n)*e复杂度】
Rain on your Parade Time Limit:3000MS Memory Limit:165535KB 64bit IO Format:%I64d & %I64 ...
- HDU 2389 Rain on your Parade 最大匹配(模板题)【HK算法】
<题目链接> 题目大意:有m个宾客,n把雨伞,预计时间t后将会下大雨,告诉你每个宾客的位置和速度,每把雨伞的位置,问你最多几个宾客能够拿到伞. 解题分析: 本题就是要我们求人与伞之间的最大 ...
- HDU 4607.Park Visit-树的直径(BFS版)+结论公式(乱推公式)-备忘(加油!)
Park Visit Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- (匹配 Hopcroft-Karp算法)Rain on your Parade -- Hdu --2389
链接: http://acm.hdu.edu.cn/showproblem.php?pid=2389 不能用匈牙利,会TEL的,用Hopcroft-Karp Hopcroft-Karp课件 以前是寻找 ...
- HDU 2853 最大匹配&KM模板
http://acm.hdu.edu.cn/showproblem.php?pid=2853 这道题初看了没有思路,一直想的用网络流如何解决 参考了潘大神牌题解才懂的 最大匹配问题KM 还需要一些技巧 ...
- HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4528 小明系列故事——捉迷藏 Time Limit: 500/200 MS (Java/O ...
- hdu 1072 Nightmare (bfs+优先队列)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1072 Description Ignatius had a nightmare last night. H ...
- HDU 3533 Escape bfs 难度:1
http://acm.hdu.edu.cn/showproblem.php?pid=3533 一道普通的bfs,但是由于代码实现出了bug还是拖了很久甚至对拍了 需要注意的是: 1.人不能经过炮台 2 ...
随机推荐
- Java动态替换InetAddress中DNS的做法简单分析2
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...
- IOS应用程序升级
IOS应用程序升级流程介绍:IOS手机端应用程序需要升级时,打开服务器端html文件(本文为ucab.html文件)->点击在线安装->打开plist文件(本文中为ucab.plist文件 ...
- Thread系列——Thread.Sleep(0)
转载自:http://www.cnblogs.com/ATually/archive/2010/10/21/1857261.html 线程这一概念,可以理解成进程中的一个小单元.这个单元是一个独立的执 ...
- 针对《来用》的NABC分析
项目名:<来用> 特点:拥有以往win7在内的众多小游戏 NABC分析 N(need需求): 之所以有这个想法是因为,在WIN7,XP系统中往往有很多众所周知的小游戏(比如扫雷),但是在w ...
- Careercup - Microsoft面试题 - 6282862240202752
2014-05-11 03:56 题目链接 原题: Given an integer array. Perform circular right shift by n. Give the best s ...
- C3P0连接池详解及配置
C3P0连接池详解及配置 本人使用的C3P0的jar包是:c3p0-0.9.1.jar <bean id = "dataSource" class = "com.m ...
- bzoj 1028 暴力枚举判断
昨天梦到这道题了,所以一定要A掉(其实梦到了3道,有两道记不清了) 暴力枚举等的是哪张牌,将是哪张牌,然后贪心的判断就行了. 对于一个状态判断是否为胡牌,1-n扫一遍,然后对于每个牌,先mod 3, ...
- BZOJ2457 BeiJing2011 双端队列
[问题描述] Sherry现在碰到了一个棘手的问题,有N个整数需要排序. Sherry手头能用的工具就是若干个双端队列. 她需要依次处理这N个数,对于每个数,Sherry能做以下两件事 ...
- java数组与内存控制
1.1数组的初始化 数组是大多数编程语言都提供一种的复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组.java语言的数组变量时引用类型的变量,因此具有java独有的特性. java数 ...
- frequentism-and-bayesianism-chs-ii
frequentism-and-bayesianism-chs-ii 频率主义 vs 贝叶斯主义 II:当结果不同时 这个notebook出自Pythonic Perambulations的博文 ...