传送门
PROBLEM
2维平面上有n个木桩,黄学长有一次圈地的机会并得到圈到的土地,为了体现他的高风亮节,他要使他圈到的土地面积尽量小。圈地需要圈一个至少3个点的多边形,多边形的顶点就是一个木桩,圈得的土地就是这个多边形内部的土地。(因为黄学长非常的神,所以他允许圈出的第n点共线,那样面积算0)
对于100%的数据,n<=1000。
SOL
思考一个 n 2 n^2 n2算法,不难想到对于 n 2 n^2 n2条线段(两点),最优的第三点离该线段最近。相当于把线段看成 Y Y Y轴旋转。
如何O(1)找到最近点? 在前后两条线段的 决策点的 x ′ x' x′递增序列 中,有大部分的相对位置未变。换而言之,对于任意两点,设为 i i i, j j j,假设 x i < x j x_{i}<x_{j} xi<xj,只有线段 i j ij

这篇博客介绍了BZOJ3707圈地问题,黄学长需要在2D平面上以最小面积圈出至少3个木桩构成的多边形。100%的数据中木桩数量n≤1000。解决方案是一个n²算法,通过考虑线段之间的最近第三点,并利用线段斜率排序和决策点的x坐标递增序列来优化,达到O(1)查找最近点的效果。
最低0.47元/天 解锁文章
840

被折叠的 条评论
为什么被折叠?



