2011年10月7日
摘要: HDU_2448 首先求出各个港口和船之间的最短路,然后用KM算法求二分图最优匹配即可。#include<stdio.h>#include<string.h>#define MAXD 110#define INF 1000000000#define MAX 100000int M, K, P, N, d[MAXD], G[MAXD][MAXD], yM[MAXD];int A[MAXD], B[MAXD], slack, visx[MAXD], visy[MAXD];int f[2 * MAXD][2 * MAXD];void init(){ int i, j, k, 阅读全文
posted @ 2011-10-07 21:28 Staginner 阅读(315) 评论(0) 推荐(0) 编辑
摘要: HDU_1533 由于图上每个点都可达,所以人和房子间的最短距离就是曼哈顿距离。建好图之后应用KM算法求二分图最优匹配即可。#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAXD 110#define MAX 10010#define INF 1000000000int N, hx[MAXD], hy[MAXD], px[MAXD], py[MAXD];int a[MAXD][MAXD], G[MAXD][MAXD], yM[MAXD];int A[MAXD], B[MAXD], s 阅读全文
posted @ 2011-10-07 19:35 Staginner 阅读(287) 评论(0) 推荐(0) 编辑
摘要: HDU_1598一开始用Floyd写,结果WA掉了,怀疑是两存在点之间有多条路的情况。后来想到二分差值、枚举下界、判连通,但由于我是从权值着眼,依次递增去枚举下界的,结果由于数据范围太大果断超时了。后来看了网上的报告,他直接把所有的边先进行排序,然后以边为单位进行枚举下界,我于是恍然大悟,因为边的数量很少,只有1000条,所以以边为单位枚举下界,确实是个不错的选择。#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAXD 210#define MAXM 1010int N, M, u[ 阅读全文
posted @ 2011-10-07 18:25 Staginner 阅读(371) 评论(0) 推荐(0) 编辑