Description
在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成的多边形面积最大。
Input
第1行一个正整数N,接下来N行,每行2个数x,y,表示该点的横坐标和纵坐标。
Output
最大的多边形面积,答案精确到小数点后3位。
Sample Input
5
0 0
1 0
1 1
0 1
0.5 0.5
0 0
1 0
1 1
0 1
0.5 0.5
Sample Output
1.000
HINT
数据范围 n<=2000, |x|,|y|<=100000
记得前几天ZGS就喊看计算几何,可惜一直浪,没看,昨天考着了,不过数据卡的不紧,YY了个n^2logn都过了,感觉凸包和斜率优化基本一样,会斜率优化就能写出来。
对于这道题,肯定这四个点再凸包上,然后我们枚举四边形的对角线,将四边形面积拆成两个三角形面积。我们发现,因为剩下的两个点都在凸包上,所以如果我们由左到右顺序枚举每个点,那构成的三角形面积的图像一定是一个单峰函数,然后果断三分,考场上卡到一秒过,不过下来测是0.8左右,估计评测机太渣了。
然后这里有一个很有用的优化。我们发现,在枚举对角线时,三角形另一个点的最优位置一定也是递增的,所以时间复杂度可以优化到n^2,似乎这个名字叫旋转卡壳。。。
我的代码太丑了,就不贴了^_^