凸包。。。我要刷光各大OJ的凸包。。。
从discuss学来的。。。刚开始没看懂题意都。。想麻烦了。。
这个题是给你凸包上的点,给的无序,让你排出来有序的。
这个方法遇到一种情况就坏了。。。
就是下图:
但是,对于凸包来说,一定能找到一个点,过这个点平行于Y轴或者X轴的直线 能划分成两个区域。
不过具体怎么求,还要想想。
这道题是直接告诉你了,按x最小的去求。
啊。。不对。。这题应该是数据弱了。。这么做是不对滴。。。上面的图就是反例啊。。。
我试试另一种做法~刚想起来~
下面这个代码是很弱的。。。看下个代码吧~^ ^
昨晚失眠了,3点半的时候床上躺了会,迷迷瞪瞪地,四点被姐的飞信吵醒了 = =。。迟钝死了都。突然想起来怎么划分这题了。
直接找最远点对,然后这个点对分成的凸包的两个区域再按照上面的排序,就OK了。。。
然后下床实现~排除各种BUG。。A掉了,时间和上个差不多。都是N*LOGN的~~
好啦,第三个代码~内点排序,用重心哈,凸包的重心一定是在内部的(也不可能在边上)。
因为加了精度判断,慢了不少。
写比较函数很纠结啊。。。