摘要: 题目链接:http://poj.org/problem?id=3241 题意:平面上有n个点集,现在把他们分成k个集合,使得每个集合中的每个点都至少有一个本集合的点之间的曼哈顿距离不大于X,求最小的X。 题目要求划分集合之后,每个集合的曼哈顿最小生成树的最长边不超过X,那么容易想到就是整个点集的曼哈顿最小生成树的第n-k条边。。 那么主要就是求曼哈顿最小生树的问题了,有O(logn)的算法可以轻松解决建图的问题,主要是利用到了环切的性质,考虑到很多边其实都是没有用的:对于某个点,以他为中心的区域分为8个象限,对于每一个象限,只会取距离最近的一个点连边。。 ... 阅读全文
posted @ 2013-08-18 16:47 zhsl 阅读(1129) 评论(0) 推荐(0) 编辑
摘要: 原文链接,。。。关于曼哈顿距离最小生成树,还推荐看一、曼哈顿距离最小生成树曼哈顿距离最小生成树问题可以简述如下:给定二维平面上的N个点,在两点之间连边的代价为其曼哈顿距离,求使所有点连通的最小代价。朴素的算法可以用O(N2)的Prim,或者处理出所有边做Kruskal,但在这里总边数有O(N2)条,所以Kruskal的复杂度变成了O(N2logN)。但是事实上,真正有用的边远没有O(N2)条。我们考虑每个点会和其他一些什么样的点连边。可以得出这样一个结论,以一个点为原点建立直角坐标系,在每45度内只会向距离该点最近的一个点连边。这个结论可以证明如下:假设我们以点A为原点建系,考虑在y轴向右.. 阅读全文
posted @ 2013-08-18 00:33 zhsl 阅读(664) 评论(0) 推荐(0) 编辑