Rain on your Parade HDU - 2389 (hc板题)
在客人能够拿到的伞与客人之间建边 跑hc就好了。。。。
看看别人的:https://blog.csdn.net/wall_f/article/details/8248350
- #include <iostream>
- #include <cstdlib>
- #include <cstdio>
- #include <cstring>
- #include <queue>
- #include <cmath>
- using namespace std;
- const int MAXN = ;
- const int MAXM = *;
- const int INF = 0x3f3f3f3f;
- struct Edge
- {
- int v;
- int next;
- }edge[MAXM];
- struct node
- {
- double x, y;
- double v;
- }a[MAXN], b[MAXN];
- int nx, ny;
- int cnt;
- int t;
- int dis;
- int first[MAXN];
- int xlink[MAXN], ylink[MAXN];
- int dx[MAXN], dy[MAXN];
- int vis[MAXN];
- void init()
- {
- cnt = ;
- memset(first, -, sizeof(first));
- memset(xlink, -, sizeof(xlink));
- memset(ylink, -, sizeof(ylink));
- }
- void read_graph(int u, int v)
- {
- edge[cnt].v = v;
- edge[cnt].next = first[u], first[u] = cnt++;
- }
- int bfs()
- {
- queue<int> q;
- dis = INF;
- memset(dx, -, sizeof(dx));
- memset(dy, -, sizeof(dy));
- for(int i = ; i < nx; i++)
- {
- if(xlink[i] == -)
- {
- q.push(i);
- dx[i] = ;
- }
- }
- while(!q.empty())
- {
- int u = q.front(); q.pop();
- if(dx[u] > dis) break;
- for(int e = first[u]; e != -; e = edge[e].next)
- {
- int v = edge[e].v;
- if(dy[v] == -)
- {
- dy[v] = dx[u] + ;
- if(ylink[v] == -) dis = dy[v];
- else
- {
- dx[ylink[v]] = dy[v]+;
- q.push(ylink[v]);
- }
- }
- }
- }
- return dis != INF;
- }
- int find(int u)
- {
- for(int e = first[u]; e != -; e = edge[e].next)
- {
- int v = edge[e].v;
- if(!vis[v] && dy[v] == dx[u]+)
- {
- vis[v] = ;
- if(ylink[v] != - && dy[v] == dis) continue;
- if(ylink[v] == - || find(ylink[v]))
- {
- xlink[u] = v, ylink[v] = u;
- return ;
- }
- }
- }
- return ;
- }
- int MaxMatch()
- {
- int ans = ;
- while(bfs())
- {
- memset(vis, , sizeof(vis));
- for(int i = ; i < nx; i++) if(xlink[i] == -)
- {
- ans += find(i);
- }
- }
- return ans;
- }
- /*double dist(const node a, const node b) //TLE,无力吐槽了
- {
- return sqrt(pow((a.x-b.x), 2.0) + pow((a.y-b.y), 2.0));
- }*/
- double dist(const node a, const node b)
- {
- return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y));
- }
- void read_case()
- {
- init();
- int Time;
- scanf("%d", &Time);
- scanf("%d", &nx);
- for(int i = ; i < nx; i++)
- {
- scanf("%lf%lf%lf", &a[i].x, &a[i].y, &a[i].v);
- }
- scanf("%d", &ny);
- for(int i = ; i < ny; i++)
- {
- scanf("%lf%lf", &b[i].x, &b[i].y);
- }
- for(int i = ; i < nx; i++)
- {
- for(int j = ; j < ny; j++)
- {
- double limit = a[i].v*Time;
- double s = dist(a[i], b[j]);
- if(s <= limit) read_graph(i, j);
- }
- }
- }
- void solve()
- {
- read_case();
- int ans = MaxMatch();
- printf("%d\n\n", ans); //注意格式
- }
- int main()
- {
- int T, times = ;
- scanf("%d", &T);
- while(T--)
- {
- printf("Scenario #%d:\n", ++times);
- solve();
- }
- return ;
- }
Rain on your Parade HDU - 2389 (hc板题)的更多相关文章
- (匹配 Hopcroft-Karp算法)Rain on your Parade -- Hdu --2389
链接: http://acm.hdu.edu.cn/showproblem.php?pid=2389 不能用匈牙利,会TEL的,用Hopcroft-Karp Hopcroft-Karp课件 以前是寻找 ...
- F - Rain on your Parade - hdu 2389(二分图匹配,Hk算法)
题意:给一些人和一些伞的坐标,然后每个人都有一定的速度,还有多少时间就会下雨,问最多能有多少人可以拿到伞. 分析:题意很明确,可以用每个人和伞判断一下是否能够达到,如果能就建立一个联系.不过这道题的数 ...
- 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(二分匹配,Hopcroft-Carp算法)
Rain on your Parade Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 655350/165535 K (Java/Ot ...
- HDOJ 2389 Rain on your Parade
HK.... Rain on your Parade Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 655350/165535 K ...
- Hdu 3289 Rain on your Parade (二分图匹配 Hopcroft-Karp)
题目链接: Hdu 3289 Rain on your Parade 题目描述: 有n个客人,m把雨伞,在t秒之后将会下雨,给出每个客人的坐标和每秒行走的距离,以及雨伞的位置,问t秒后最多有几个客人可 ...
- Rain on your Parade
Rain on your Parade Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 655350/165535 K (Java/Ot ...
- 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 ...
随机推荐
- Huploadify V2.1+ SpringMVC上传文件的实现
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 20155209林虹宇逆向及Bof基础实验报告
20155209林虹宇逆向及Bof基础实验报告 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符 ...
- Luogu P1993 小 K 的农场
其实很早以前就打好了,但一直忘记写了. 也就是差分约束的模板题. 关于差分约束,也就是用来求关于一些不等式互相约束算出最优解. 推荐一个讲的很好的博客:http://www.cppblog.com/m ...
- CS190.1x-ML_lab4_ctr_student
这次lab主要主要是研究click-through rate (CTR).数据集来自于Kaggle的Criteo Labs dataset.相关ipynb文件见我github. 作业分成5个部分:on ...
- Vue.js动态组件
动态组件: 1.定义: 几个组件放在同一个挂载点下,然后根据父组件的某个变量来决定显示哪个,或者都不显示. 2.动态切换原理: 在挂载点使用<component>标签,然后使用v-bind ...
- 虚拟机console基础环境部署——工作目录准备
1. 概述2. 相关约定2.1 删除旧文件2.2 创建全局共享文件目录2.3 创建全局软件安装目录2.4 创建数据放置目录3. 总结 1. 概述 上述博客中,已经为console最小化安装了操作系统. ...
- Ubuntu Google Chrome
Chrome安装 添加下载源 sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.l ...
- 基于Shader实现的UGUI描边解决方案
基于Shader实现的UGUI描边解决方案 前言 大扎好,我系狗猥.当大家都以为我鸽了的时候,我又出现了,这也是一种鸽.创业两年失败后归来,今天想给大家分享一个我最近研究出来的好康的,比游戏还刺激,还 ...
- 粒子群算法(PSO)算法解析(简略版)
粒子群算法(PSO) 1.粒子群算法(PSO)是一种基于群体的随机优化技术: 初始化为一组随机解,通过迭代搜寻最优解. PSO算法流程如图所示(此图是从PPT做好,复制过来的,有些模糊) 2.PSO模 ...
- Unity3D与C#网站收藏
siki学院(目前学习ing) http://www.sikiedu.com/ 雨松MOMO研究院 http://www.xuanyusong.com/ 知乎:Unity 开发教程相关回答(初步了解下 ...