HDU 2389 Rain on your Parade(H-C算法,二分图匹配)
来源:互联网 发布:军人网络泄密案例解析 编辑:程序博客网 时间:2024/04/29 12:52
解题思路:
比较适合大数据的二分图匹配,用匈牙利算法会超时
#include <cstring>#include <algorithm>#include <cstdio>#include <queue>#include <iostream>using namespace std;const int MAXN = 3000 + 10;const int INF=1<<28;/************************************************/int g[MAXN][MAXN],Mx[MAXN],My[MAXN],Nx,Ny;int dx[MAXN],dy[MAXN],dis;bool vst[MAXN];bool searchP(){ queue<int>Q; dis=INF; memset(dx,-1,sizeof(dx)); memset(dy,-1,sizeof(dy)); for(int i=0;i<Nx;i++) if(Mx[i]==-1) { Q.push(i); dx[i]=0; } while(!Q.empty()) { int u=Q.front(); Q.pop(); if(dx[u]>dis) break; for(int v=0;v<Ny;v++) if(g[u][v]&&dy[v]==-1) { dy[v]=dx[u]+1; if(My[v]==-1) dis=dy[v]; else { dx[My[v]]=dy[v]+1; Q.push(My[v]); } } } return dis!=INF;}bool DFS(int u){ for(int v=0;v<Ny;v++) if(!vst[v]&&g[u][v]&&dy[v]==dx[u]+1) { vst[v]=1; if(My[v]!=-1&&dy[v]==dis) continue; if(My[v]==-1||DFS(My[v])) { My[v]=u; Mx[u]=v; return 1; } } return 0;}int MaxMatch(){ int res=0; memset(Mx,-1,sizeof(Mx)); memset(My,-1,sizeof(My)); while(searchP()) { memset(vst,0,sizeof(vst)); for(int i=0;i<Nx;i++) if(Mx[i]==-1&&DFS(i)) res++; } return res;}/*******************************************************/struct Point{ int x, y;}A[MAXN], B[MAXN];int V[MAXN];int d(Point a, Point b){ int x = a.x - b.x; int y = a.y - b.y; return x * x + y * y;}int main(){ int T, kcase = 1; scanf("%d", &T); while(T--) { int n, m, t; scanf("%d", &t); scanf("%d", &n); for(int i=0;i<n;i++) { scanf("%d%d", &A[i].x, &A[i].y); scanf("%d", &V[i]); } scanf("%d", &m); for(int i=0;i<m;i++) scanf("%d%d", &B[i].x, &B[i].y); Nx = n, Ny = m; memset(g, 0, sizeof(g)); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(d(A[i], B[j]) <= (V[i] * V[i] * t * t)) { g[i][j] = 1; } } } printf("Scenario #%d:\n", kcase++); printf("%d\n\n", MaxMatch()); } return 0;}
0 0
- HDU 2389 Rain on your Parade(H-C算法,二分图匹配)
- hdu 2389 Rain on your Parade 二分匹配 HK算法
- 【二分匹配】 HDU 2389 Rain on your Parade HK算法
- HDU 2389 Rain on your Parade (二分图匹配(Hopcroft-Carp的算法模板))
- hdu 2389 Rain on your Parade 二分图匹配+HK算法
- hdu 2389 Rain on your Parade(二分最大匹配HK算法)
- hdu 2389 Rain on your Parade (二分匹配 Hc 算法)
- HDU 2389 Rain on your Parade(二分匹配+Hopcroft-Carp算法模板题)
- HDU 2389Rain on your Parade (HK二分图)
- hdu 2389 Rain on your Parade(二分图最大匹配,Hopcroft-Karp)
- HDU-2389-Rain on your Parade [二分匹配][Hopcroft-Carp]
- 【HDU】2389 Rain on your Parade 二分匹配 Hopcroft-Krap算法
- hdu 2389 Rain on your Parade(二分匹配Hopcroft-Carp算法模版)
- hdu 2389 Rain on your Parade (二分图,Hopcroft-Karp)
- HDU2389 Rain on your Parade(二分图匹配 ,HK算法 )
- HDU2389-Rain on your Parade(二分图匹配Hopcroft-Karp算法)
- HDU2389---Rain on your Parade (二分图匹配-HK算法)
- hdu2389 Rain on your Parade(二分匹配hopcroft-carp算法)
- 阿里笔试题,乱序序列的保序输出。
- iOS 6.0中UIViewController被弃用的一些方法(界面跳转等)
- 轻松禁止自动更新FLASH插件有绝招
- URL传递中文之JavaScript encodeURIComponent
- 什么是继承?继承的运用和的特点,以及如何验证。
- HDU 2389 Rain on your Parade(H-C算法,二分图匹配)
- vim学习之路(1)-vim基本操作
- 杭电 HDU 2674 N!Again
- Mac 安卓开发adb整合
- js-json---各种格式数据格式提要
- wait_timeout和interactive_timeout区别
- 欢迎使用CSDN-markdown编辑器
- leetcode 日经贴,Cpp code -Rotate Array
- Anniversary party(树形DP)