定義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)的斜率哪個更大。(叉積判斷即可)
相當於直接扔掉了一列或者一行
證明考慮反證法即可。