【HDOJ】2389 Rain on your Parade
读题显然是二分图匹配,看成guest与umbrella的匹配。匈牙利果断TLE了,其实时间卡的相当紧。HK过的,750ms。
/* 2389 */
#include <iostream>
#include <string>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <vector>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <ctime>
#include <cstring>
#include <climits>
#include <cctype>
using namespace std; typedef struct {
int v, next;
} Edge_t; const int maxn = ; Edge_t E[maxn*maxn];
int head[maxn], L;
int dx[maxn], dy[maxn];
int xpre[maxn], ypre[maxn];
int gx[maxn], gy[maxn], gs[maxn];
bool visit[maxn];
int rt, n, m;
int ans, dis; void init() {
L = ;
memset(head, -, sizeof(head));
memset(xpre, -, sizeof(xpre));
memset(ypre, -, sizeof(ypre));
} void addEdge(int u, int v) {
E[L].v = v;
E[L].next = head[u];
head[u] = L++;
} bool bfs() {
int i, j, k;
int u, v;
queue<int> Q; memset(dx, -, sizeof(dx));
memset(dy, -, sizeof(dy));
dis = INT_MAX; for (i=; i<m; ++i) {
if (xpre[i] == -) {
Q.push(i);
dx[i] = ;
}
} while (!Q.empty()) {
u = Q.front();
Q.pop();
if (dx[u] > dis)
break;
for (i=head[u]; i!=-; i=E[i].next) {
v = E[i].v;
if (dy[v] == -) {
dy[v] = dx[u] + ;
if (ypre[v] == -) {
dis = dy[v];
} else {
dx[ypre[v]] = dy[v] + ;
Q.push(ypre[v]);
}
}
}
} return dis!=INT_MAX;
} int dfs(int u) {
int i, v;
// Edge_t e; for (i=head[u]; i!=-; i=E[i].next) {
v = E[i].v;
if (!visit[v] && dy[v]==dx[u]+) {
visit[v] = true;
if (ypre[v]!=- && dy[v]==dis)
continue;
if (ypre[v]==- || dfs(ypre[v])) {
xpre[u] = v;
ypre[v] = u;
return ;
}
}
} return ;
} int HK() {
int ret = ; while (bfs()) {
memset(visit, false, sizeof(visit));
for (int i=; i<m; ++i)
if (xpre[i] == -)
ret += dfs(i);
}
return ret;
} int main() {
int i, j, k;
int t, tt;
int x, y; #ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
freopen("data.out", "w", stdout);
#endif scanf("%d", &tt);
for (t=; t<=tt; ++t) {
scanf("%d", &rt);
scanf("%d", &m);
init();
for (i=; i<m; ++i)
scanf("%d %d %d", &gx[i], &gy[i], &gs[i]);
scanf("%d", &n);
for (i=; i<n; ++i) {
scanf("%d %d", &x, &y);
for (j=; j<m; ++j) {
dis = gs[i] * rt;
if ((x-gx[j])*(x-gx[j])+(y-gy[j])*(y-gy[j]) <= dis*dis)
addEdge(j, i);
}
}
ans = HK();
printf("Scenario #%d:\n%d\n\n", t, ans);
} #ifndef ONLINE_JUDGE
printf("%d\n", (int)clock());
#endif return ;
}
【HDOJ】2389 Rain on your Parade的更多相关文章
- 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 ...
- HDOJ 2389 Rain on your Parade
HK.... Rain on your Parade Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 655350/165535 K ...
- HDU 2389 Rain on your Parade(二分匹配,Hopcroft-Carp算法)
Rain on your Parade Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 655350/165535 K (Java/Ot ...
- HDU 2389 Rain on your Parade 最大匹配(模板题)【HK算法】
<题目链接> 题目大意:有m个宾客,n把雨伞,预计时间t后将会下大雨,告诉你每个宾客的位置和速度,每把雨伞的位置,问你最多几个宾客能够拿到伞. 解题分析: 本题就是要我们求人与伞之间的最大 ...
- 【HDOJ】4729 An Easy Problem for Elfness
其实是求树上的路径间的数据第K大的题目.果断主席树 + LCA.初始流量是这条路径上的最小值.若a<=b,显然直接为s->t建立pipe可以使流量最优:否则,对[0, 10**4]二分得到 ...
- 【题解】【直方图】【Leetcode】Trapping Rain Water
Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...
- 【HDOJ】【3506】Monkey Party
DP/四边形不等式 裸题环形石子合并…… 拆环为链即可 //HDOJ 3506 #include<cmath> #include<vector> #include<cst ...
- 【HDOJ】【3516】Tree Construction
DP/四边形不等式 这题跟石子合并有点像…… dp[i][j]为将第 i 个点开始的 j 个点合并的最小代价. 易知有 dp[i][j]=min{dp[i][j] , dp[i][k-i+1]+dp[ ...
随机推荐
- JavaScript与html5写的贪吃蛇完整代码
JavaScript与html5写的贪吃蛇完整代码 查看运行效果可访问http://www.codesocang.com/texiao/youxitexiao/2014/0402/7045.html# ...
- python下操作ftp上传
生产情况:tomcat下业务log备份,目录分多级,然后对应目录格式放到ftp上:所以,结构上 我就是一级一级目录进行判断(因为我没有找到在ftp一次判断其子目录是否存在),还有一个low点就是我没有 ...
- CentOS7上GitHub/GitLab多帐号管理SSH Key
由于公司团队使用 GitLab 来托管代码,同时,个人在 Github 上还有一些代码仓库,可公司邮箱与个人邮箱是不同的,由此产生的 SSH key 也是不同的,这就造成了冲突 ,文章提供此类问题的解 ...
- apache、mod_jk负载均衡与tomcat集群
最近需要搭建apache和tomcat的集群,实现静态网站直接通过apache访问,动态网站转交给tomcat处理,实现负载均衡和tomcat集群配置. apache安装 wget http://ap ...
- Oracle中not exists 与not in 的使用情况
1.在oracle11g以上版本,oracle已经做了优化,能够自动将in优化成exists方式,因此oracle11g以上版本,使用in和exists效果是一样的. 2.在oracle中,使用not ...
- centos 6.3 编译安装 nginx +mysql + php
这篇文章是对另一篇文章的整理,作为记录收藏 1,配置防火墙,开启80端口.3306端口 配置iptables,开启80端口.3306端口 vi /etc/sysconfig/iptables -A I ...
- java csv - 读写及其操作.
今天帮同学处理数据, 主要是从1w多条记录中随机获取8k条, 然后再从8k条记录中随机获取2k条记录. 最后将2k条记录中随机分成10组,使得每组的记录都不重复. 下面将我的代码都贴上来, 好以后处理 ...
- 关于wordpress忘记密码 找回密码的方式
1.通过直接修改数据库中密码的加密字符(如果wordpress的版本不同,那么此方法是不好实现的) 2.使用找回密码的方式:通过邮箱找回密码 前端登录密码错误后 会显示 错误); 方法二 打开WP ...
- linux ssh rsa免输入密码
A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为172.24.253.2 ; 在A上的命令: ssh-keygen -t rsa (连续三 ...
- VMWare ESX Server
VMWare ESX Server 4.1 全套下载 [转自:http://www.awolf.net/content/hack/vmware-esx-server-4-1-all-download. ...