在客人能够拿到的伞与客人之间建边  跑hc就好了。。。。

看看别人的:https://blog.csdn.net/wall_f/article/details/8248350

  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstdio>
  4. #include <cstring>
  5. #include <queue>
  6. #include <cmath>
  7. using namespace std;
  8.  
  9. const int MAXN = ;
  10. const int MAXM = *;
  11. const int INF = 0x3f3f3f3f;
  12.  
  13. struct Edge
  14. {
  15. int v;
  16. int next;
  17. }edge[MAXM];
  18.  
  19. struct node
  20. {
  21. double x, y;
  22. double v;
  23. }a[MAXN], b[MAXN];
  24.  
  25. int nx, ny;
  26. int cnt;
  27. int t;
  28. int dis;
  29.  
  30. int first[MAXN];
  31. int xlink[MAXN], ylink[MAXN];
  32. int dx[MAXN], dy[MAXN];
  33. int vis[MAXN];
  34.  
  35. void init()
  36. {
  37. cnt = ;
  38. memset(first, -, sizeof(first));
  39. memset(xlink, -, sizeof(xlink));
  40. memset(ylink, -, sizeof(ylink));
  41. }
  42.  
  43. void read_graph(int u, int v)
  44. {
  45. edge[cnt].v = v;
  46. edge[cnt].next = first[u], first[u] = cnt++;
  47. }
  48.  
  49. int bfs()
  50. {
  51. queue<int> q;
  52. dis = INF;
  53. memset(dx, -, sizeof(dx));
  54. memset(dy, -, sizeof(dy));
  55. for(int i = ; i < nx; i++)
  56. {
  57. if(xlink[i] == -)
  58. {
  59. q.push(i);
  60. dx[i] = ;
  61. }
  62. }
  63. while(!q.empty())
  64. {
  65. int u = q.front(); q.pop();
  66. if(dx[u] > dis) break;
  67. for(int e = first[u]; e != -; e = edge[e].next)
  68. {
  69. int v = edge[e].v;
  70. if(dy[v] == -)
  71. {
  72. dy[v] = dx[u] + ;
  73. if(ylink[v] == -) dis = dy[v];
  74. else
  75. {
  76. dx[ylink[v]] = dy[v]+;
  77. q.push(ylink[v]);
  78. }
  79. }
  80. }
  81. }
  82. return dis != INF;
  83. }
  84.  
  85. int find(int u)
  86. {
  87. for(int e = first[u]; e != -; e = edge[e].next)
  88. {
  89. int v = edge[e].v;
  90. if(!vis[v] && dy[v] == dx[u]+)
  91. {
  92. vis[v] = ;
  93. if(ylink[v] != - && dy[v] == dis) continue;
  94. if(ylink[v] == - || find(ylink[v]))
  95. {
  96. xlink[u] = v, ylink[v] = u;
  97. return ;
  98. }
  99. }
  100. }
  101. return ;
  102. }
  103.  
  104. int MaxMatch()
  105. {
  106. int ans = ;
  107. while(bfs())
  108. {
  109. memset(vis, , sizeof(vis));
  110. for(int i = ; i < nx; i++) if(xlink[i] == -)
  111. {
  112. ans += find(i);
  113. }
  114. }
  115. return ans;
  116. }
  117.  
  118. /*double dist(const node a, const node b) //TLE,无力吐槽了
  119. {
  120. return sqrt(pow((a.x-b.x), 2.0) + pow((a.y-b.y), 2.0));
  121. }*/
  122.  
  123. double dist(const node a, const node b)
  124. {
  125. return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y));
  126. }
  127.  
  128. void read_case()
  129. {
  130. init();
  131. int Time;
  132. scanf("%d", &Time);
  133. scanf("%d", &nx);
  134. for(int i = ; i < nx; i++)
  135. {
  136. scanf("%lf%lf%lf", &a[i].x, &a[i].y, &a[i].v);
  137. }
  138. scanf("%d", &ny);
  139. for(int i = ; i < ny; i++)
  140. {
  141. scanf("%lf%lf", &b[i].x, &b[i].y);
  142. }
  143. for(int i = ; i < nx; i++)
  144. {
  145. for(int j = ; j < ny; j++)
  146. {
  147. double limit = a[i].v*Time;
  148. double s = dist(a[i], b[j]);
  149. if(s <= limit) read_graph(i, j);
  150. }
  151. }
  152. }
  153.  
  154. void solve()
  155. {
  156. read_case();
  157. int ans = MaxMatch();
  158. printf("%d\n\n", ans); //注意格式
  159. }
  160.  
  161. int main()
  162. {
  163. int T, times = ;
  164. scanf("%d", &T);
  165. while(T--)
  166. {
  167. printf("Scenario #%d:\n", ++times);
  168. solve();
  169. }
  170. return ;
  171. }

Rain on your Parade HDU - 2389 (hc板题)的更多相关文章

  1. (匹配 Hopcroft-Karp算法)Rain on your Parade -- Hdu --2389

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=2389 不能用匈牙利,会TEL的,用Hopcroft-Karp Hopcroft-Karp课件 以前是寻找 ...

  2. F - Rain on your Parade - hdu 2389(二分图匹配,Hk算法)

    题意:给一些人和一些伞的坐标,然后每个人都有一定的速度,还有多少时间就会下雨,问最多能有多少人可以拿到伞. 分析:题意很明确,可以用每个人和伞判断一下是否能够达到,如果能就建立一个联系.不过这道题的数 ...

  3. 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 ...

  4. 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 ...

  5. 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 ...

  6. HDOJ 2389 Rain on your Parade

     HK.... Rain on your Parade Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 655350/165535 K ...

  7. Hdu 3289 Rain on your Parade (二分图匹配 Hopcroft-Karp)

    题目链接: Hdu 3289 Rain on your Parade 题目描述: 有n个客人,m把雨伞,在t秒之后将会下雨,给出每个客人的坐标和每秒行走的距离,以及雨伞的位置,问t秒后最多有几个客人可 ...

  8. Rain on your Parade

    Rain on your Parade Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 655350/165535 K (Java/Ot ...

  9. Hdu2389 Rain on your Parade (HK二分图最大匹配)

    Rain on your Parade Problem Description You’re giving a party in the garden of your villa by the sea ...

随机推荐

  1. Huploadify V2.1+ SpringMVC上传文件的实现

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  2. 20155209林虹宇逆向及Bof基础实验报告

    20155209林虹宇逆向及Bof基础实验报告 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符 ...

  3. Luogu P1993 小 K 的农场

    其实很早以前就打好了,但一直忘记写了. 也就是差分约束的模板题. 关于差分约束,也就是用来求关于一些不等式互相约束算出最优解. 推荐一个讲的很好的博客:http://www.cppblog.com/m ...

  4. CS190.1x-ML_lab4_ctr_student

    这次lab主要主要是研究click-through rate (CTR).数据集来自于Kaggle的Criteo Labs dataset.相关ipynb文件见我github. 作业分成5个部分:on ...

  5. Vue.js动态组件

    动态组件: 1.定义: 几个组件放在同一个挂载点下,然后根据父组件的某个变量来决定显示哪个,或者都不显示. 2.动态切换原理: 在挂载点使用<component>标签,然后使用v-bind ...

  6. 虚拟机console基础环境部署——工作目录准备

    1. 概述2. 相关约定2.1 删除旧文件2.2 创建全局共享文件目录2.3 创建全局软件安装目录2.4 创建数据放置目录3. 总结 1. 概述 上述博客中,已经为console最小化安装了操作系统. ...

  7. Ubuntu Google Chrome

    Chrome安装 添加下载源 sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.l ...

  8. 基于Shader实现的UGUI描边解决方案

    基于Shader实现的UGUI描边解决方案 前言 大扎好,我系狗猥.当大家都以为我鸽了的时候,我又出现了,这也是一种鸽.创业两年失败后归来,今天想给大家分享一个我最近研究出来的好康的,比游戏还刺激,还 ...

  9. 粒子群算法(PSO)算法解析(简略版)

    粒子群算法(PSO) 1.粒子群算法(PSO)是一种基于群体的随机优化技术: 初始化为一组随机解,通过迭代搜寻最优解. PSO算法流程如图所示(此图是从PPT做好,复制过来的,有些模糊) 2.PSO模 ...

  10. Unity3D与C#网站收藏

    siki学院(目前学习ing) http://www.sikiedu.com/ 雨松MOMO研究院 http://www.xuanyusong.com/ 知乎:Unity 开发教程相关回答(初步了解下 ...