【HDOJ】2389 Rain on your Parade
读题显然是二分图匹配,看成guest与umbrella的匹配。匈牙利果断TLE了,其实时间卡的相当紧。HK过的,750ms。
1 /* 2389 */ 2 #include <iostream> 3 #include <string> 4 #include <map> 5 #include <queue> 6 #include <set> 7 #include <stack> 8 #include <vector> 9 #include <algorithm> 10 #include <cstdio> 11 #include <cmath> 12 #include <ctime> 13 #include <cstring> 14 #include <climits> 15 #include <cctype> 16 using namespace std; 17 18 typedef struct { 19 int v, next; 20 } Edge_t; 21 22 const int maxn = 3005; 23 24 Edge_t E[maxn*maxn]; 25 int head[maxn], L; 26 int dx[maxn], dy[maxn]; 27 int xpre[maxn], ypre[maxn]; 28 int gx[maxn], gy[maxn], gs[maxn]; 29 bool visit[maxn]; 30 int rt, n, m; 31 int ans, dis; 32 33 void init() { 34 L = 0; 35 memset(head, -1, sizeof(head)); 36 memset(xpre, -1, sizeof(xpre)); 37 memset(ypre, -1, sizeof(ypre)); 38 } 39 40 void addEdge(int u, int v) { 41 E[L].v = v; 42 E[L].next = head[u]; 43 head[u] = L++; 44 } 45 46 bool bfs() { 47 int i, j, k; 48 int u, v; 49 queue<int> Q; 50 51 memset(dx, -1, sizeof(dx)); 52 memset(dy, -1, sizeof(dy)); 53 dis = INT_MAX; 54 55 for (i=0; i<m; ++i) { 56 if (xpre[i] == -1) { 57 Q.push(i); 58 dx[i] = 0; 59 } 60 } 61 62 while (!Q.empty()) { 63 u = Q.front(); 64 Q.pop(); 65 if (dx[u] > dis) 66 break; 67 for (i=head[u]; i!=-1; i=E[i].next) { 68 v = E[i].v; 69 if (dy[v] == -1) { 70 dy[v] = dx[u] + 1; 71 if (ypre[v] == -1) { 72 dis = dy[v]; 73 } else { 74 dx[ypre[v]] = dy[v] + 1; 75 Q.push(ypre[v]); 76 } 77 } 78 } 79 } 80 81 return dis!=INT_MAX; 82 } 83 84 int dfs(int u) { 85 int i, v; 86 // Edge_t e; 87 88 for (i=head[u]; i!=-1; i=E[i].next) { 89 v = E[i].v; 90 if (!visit[v] && dy[v]==dx[u]+1) { 91 visit[v] = true; 92 if (ypre[v]!=-1 && dy[v]==dis) 93 continue; 94 if (ypre[v]==-1 || dfs(ypre[v])) { 95 xpre[u] = v; 96 ypre[v] = u; 97 return 1; 98 } 99 } 100 } 101 102 return 0; 103 } 104 105 int HK() { 106 int ret = 0; 107 108 while (bfs()) { 109 memset(visit, false, sizeof(visit)); 110 for (int i=0; i<m; ++i) 111 if (xpre[i] == -1) 112 ret += dfs(i); 113 } 114 return ret; 115 } 116 117 int main() { 118 int i, j, k; 119 int t, tt; 120 int x, y; 121 122 #ifndef ONLINE_JUDGE 123 freopen("data.in", "r", stdin); 124 freopen("data.out", "w", stdout); 125 #endif 126 127 scanf("%d", &tt); 128 for (t=1; t<=tt; ++t) { 129 scanf("%d", &rt); 130 scanf("%d", &m); 131 init(); 132 for (i=0; i<m; ++i) 133 scanf("%d %d %d", &gx[i], &gy[i], &gs[i]); 134 scanf("%d", &n); 135 for (i=0; i<n; ++i) { 136 scanf("%d %d", &x, &y); 137 for (j=0; j<m; ++j) { 138 dis = gs[i] * rt; 139 if ((x-gx[j])*(x-gx[j])+(y-gy[j])*(y-gy[j]) <= dis*dis) 140 addEdge(j, i); 141 } 142 } 143 ans = HK(); 144 printf("Scenario #%d:\n%d\n\n", t, ans); 145 } 146 147 #ifndef ONLINE_JUDGE 148 printf("%d\n", (int)clock()); 149 #endif 150 151 return 0; 152 }
转载于:https://www.cnblogs.com/bombe1013/p/4432367.html
【HDOJ】2389 Rain on your Parade相关推荐
- HDUOJ 2389 Rain on your Parade
HDUOJ 2389 Rain on your Parade 题目链接 Problem Description You're giving a party in the garden of your ...
- 【HDOJ】4602 Partition
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=4602 [报告] 直接贴上标程解题报告:(虽然有些纠结,试一下就弄通了..) Problem C. Par ...
- 【HDOJ】4602 Partition_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=4602 [报告] 直接贴上标程解题报告:(虽然有些纠结,试一下就弄通了..) Problem C. Par ...
- 【HDOJ】1008 Elevator_天涯浪子_新浪博客
[题目] http://acm.hdu.edu.cn/showproblem.php?pid=1008 [报告] 这是我在HDOJ里看到的最水的题目,至少目前为止. 题目里已经讲得很清楚了,模拟就能过 ...
- 【HDOJ】1022 Train Problem I_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=1022 [报告] 模拟,直接模拟一个栈的运行就行了. [程序] // Task: 1022 Train P ...
- 【HDOJ】1003 Max Sum_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=1003 [报告] 既然是子区间加和问题,可以用减法来处理.比如求[5..10]的和,可以直接用[1..10 ...
- 【HDOJ】4768 Flyer_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=4768 [报告] 题目中已经说了,保证最多出现一个奇数,所以可以用异或的想法.把所有的数异或起来,如果最后 ...
- 【HDOJ】4699 Editor_天涯浪子_新浪博客
[题目] http://acm.hdu.edu.cn/showproblem.php?pid=4699 [报告] 模拟题吧,本身不是很难. 最初的想法是用Splay tree写,然后疯掉了.苏牛说2B ...
- 【HDOJ】4704 Sum_天涯浪子_新浪博客
[题目] http://acm.hdu.edu.cn/showproblem.php?pid=4704 [报告] S(K)显然就是N的K正整数划分数.所以SUM{S(K),1<=K<=N} ...
最新文章
- 一键部署dns服务_OpenShift : 通往云原生、DevOps、微服务和Serverless的大门
- thinkphp mysql 预处理_thinkPHP框架中执行原生SQL语句的方法
- 简颢集团“风口”下的投资机会 新能源共享领域的机遇与挑战
- PHP 免费视频教程
- 【正则表达式】JavaScript的exec()和search()方法
- MODIS数据的简介和下载(三)——MODIS数据下载方式(基于MODIS Web Service)
- Android ViewPager+TabHost实现首页导航
- leetcode 39. Combination Sum(回溯算法)
- java使用easypoi实现word模板导出
- c4d流体插件_C4D的Jet Fluids免费流体插件
- U盘不能复制超过4G的文件解决方法
- 草莓熊python turtle绘图(风车版)附源代码
- SpringBoot个人博客项目——相册模块开发(一)
- [BZOJ3503]-[CQOI2014]和谐矩阵-高斯消元
- 标学历年真题2016年版 真考题库1 电子表格
- Codeforces 1076 - 题集
- 色彩原理:三原色、色彩三要素、色彩模型
- 我奋斗了18年才和你坐在一起喝咖啡与我奋斗了18年不是为了和你一起喝咖啡
- Java进阶——注解
- linux驱动框架和驱动代码
热门文章
- 监控linux终端键盘输入,Linux内核实时监控键盘输入
- php文件夹重命名,PHP自动重命名文件实现方法
- linux硬连接脚本,linux 硬链接和软链接深入理解
- java jar 打包库_Java之 将程序打包成jar包
- github-markdown-css 使用简解,markdown文案格式优化(笔记)
- 潍坊理工的计算机专业怎么样,潍坊理工学院教育学专业怎么样
- ARM平板电脑移植Linux,iperf ARM移植
- 子恩域名授权系统2.0全解无加密无授权版盗版入库源码
- 苹果cms快鸭影视海螺精品模板
- 用ShopEx网上开店之安装Zend插件