[学习笔记]闵可夫斯基和

时间:2019-06-07 12:17:10   收藏:0   阅读:768

定义p+q=(p.x+q.x,p.y+q.y),给定两个点集,求{pi+qj}的凸包(凸壳)的问题

以求凸壳为例(凸包可以通过求上下凸壳然后拼凑):

显而易见的结论是:

新凸壳上的点一定是由p和q的凸壳上的点相加之后构成的

求出p,q的凸壳,然后合并

合并方法:双指针:

图片by:shadowice1984

技术分享图片

注意左右两个图的对应。发现就是走n+m-1步,路上的点加入新凸壳

开始时候,两个指针p1,p2都在1位置,(p1,p2+1),(p1+1,p2)和(p1,p2)的斜率哪个更大。(叉积判断即可)

相当于直接扔掉了一列或者一行

证明考虑反证法即可。

例题:CF1019E Raining season

 

原文:https://www.cnblogs.com/Miracevin/p/10987814.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!