【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[ ...
随机推荐
- 使用passenger在Centos7部署Puma+Nginx+Ruby on Rails
安装ruby环境 RVM(ruby版本管理工具)安装 gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A170311 ...
- Migration of ASP.NET app from IIS6 to IIS7 (7.5)
For many of us familiar problem. You developing applications under IIS6 and you're about to move the ...
- codeforces 148D Bag of mice(概率dp)
题意:给你w个白色小鼠和b个黑色小鼠,把他们放到袋子里,princess先取,dragon后取,princess取的时候从剩下的当当中任意取一个,dragon取得时候也是从剩下的时候任取一个,但是取完 ...
- css动画结束后 js无法修改translated值 .
由于项目的需要,俺要做一些页面的转场动画. 即将是移动端,肯定是首先css动画了. 结果确发现,css动画中,如果设置animation-fill-mode: both;在动画结束后无法个性trans ...
- 9张思维导图学习Javascript(转)
思维导图小tips:思维导图又叫心智图,是表达发射性思维的有效的图形思维工具 ,它简单却又极其有效,是一种革命性的思维工具.思维导图运用图文并重的技巧,把各级主题的关系用相互隶属与相关的层级图表现出来 ...
- DedeCMS文章标题前增加所属栏目名称链接
问题描述:在调用文章标题的时候,我想实现这样的形式:“[国内新闻]站长无忧真的是一个不错的站”,其中“国内新闻”是标题的所属栏目,并且加链接: 解决方法: [field:typelink /]这 ...
- A的ascll吗是多少?
//输入一个字符,返回他的ascll码 #include<stdio.h> int main() { char a; while(scanf("%c",&a)! ...
- Java线程:新特征-线程池
Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利.为了编写高效稳定可靠的多线程程序 ...
- strace跟踪操作的详细内容
- ThinkPHP调试模式与日志记录
1.可以在config.php中进行设置,默认为关闭状态. 'APP_DEBUG' => true 打开\ThinkPHP\Common\debug.php文件可以查看debug的默认设置 ...