1. 程式人生 > >UVA 11626 Convex Hull

UVA 11626 Convex Hull

凸包。。。我要刷光各大OJ的凸包。。。

從discuss學來的。。。剛開始沒看懂題意都。。想麻煩了。。

這個題是給你凸包上的點,給的無序,讓你排出來有序的。

這個方法遇到一種情況就壞了。。。

就是下圖:

但是,對於凸包來說,一定能找到一個點,過這個點平行於Y軸或者X軸的直線 能劃分成兩個區域。

不過具體怎麼求,還要想想。

這道題是直接告訴你了,按x最小的去求。

啊。。不對。。這題應該是資料弱了。。這麼做是不對滴。。。上面的圖就是反例啊。。。

我試試另一種做法~剛想起來~

下面這個程式碼是很弱的。。。看下個程式碼吧~^ ^

 

昨晚失眠了,3點半的時候床上躺了會,迷迷瞪瞪地,四點被姐的飛信吵醒了 = =。。遲鈍死了都。突然想起來怎麼劃分這題了。

直接找最遠點對,然後這個點對分成的凸包的兩個區域再按照上面的排序,就OK了。。。

然後下床實現~排除各種BUG。。A掉了,時間和上個差不多。都是N*LOGN的~~

 

好啦,第三個程式碼~內點排序,用重心哈,凸包的重心一定是在內部的(也不可能在邊上)。

因為加了精度判斷,慢了不少。

寫比較函式很糾結啊。。。