BZOJ3707 圈地【计算几何】

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

传送门

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&#x27; x递增序列 中,有大部分的相对位置未变。换而言之,对于任意两点,设为 i i i j j j,假设 x i &lt; x j x_{i}&lt;x_{j} xi<x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值