pku 1696 Space Ant(转角,凸包扩展)

有一个外星人,只会左转不会右转,走路的时候还会在地上留下痕迹,外星人不能越过自己留下的痕迹。

平面上有n个点,外星人从最下面一个位置出发,问最多能走遍平面上的多少个点,怎么走。

 

因为是从最下面的位置出发,很明显一直沿着最外围的点走,是可以走遍所有点的。这样的寻点和凸包很像,只是在走到凸包的最后一个节点时,不去连接起始节点,而是往凸包内部继续寻找。

 

出发后,尽量找转角小的点。

一种做法是用向量点积求转角的cos值来比较,这样做的缺点是运算量大,角度的比较会有点麻烦。

另一种做法,先任意选定一个点作为下一个节点,然后和剩下的节点用向量叉积比较,判断向量方向关系,选择更靠右边的向量。这样做所有的运算都是整数运算,而且比较方便。

两种做法的时间效率都是O(n^2)。还有一点需要注意的是转角相同的时候选择距离近的点。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值