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

定义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

 

posted @ 2019-06-07 11:06  *Miracle*  阅读(1401)  评论(0编辑  收藏  举报