凸包,顧名思義,就是凸多邊形包圍,具體定義見OI-wiki(既是周長最小也是面積最小)
有Graham演算法和Andrew演算法,後者精度更高常數更小(因為不涉及求角度)
Andrew演算法:
1.將點排序(橫座標為第一關鍵字,縱座標為第二關鍵字)
2.從左到右維護上半部分,再從右到左維護下半部分。具體見OI-wiki。最後說的“不需要保留位於凸包邊上的點”,這個要看題目要求,如果要求保留那就要保留,不是一定不用保留
嚴格證明好像不太會。另外,按照這種排序方式,先求上凸殼還是先求下凸殼是matter的,但是為啥想不出來,可以看看acwingY總的程式碼和洛谷的討論,去想一下他們為什麼會出現問題,以及為什麼我們不會出現問題