小粽圈地
问题描述
小粽家里有一块地,地上有
n 个木桩。小粽家的地可以看作是一个平面,并且小粽知道每个木桩的坐标
(xi,yi)。
小粽很喜欢四边形,现在她想从这些木桩中选出
4 个来围成一个四边形(这个四边形为简单多边形,即每条边不能和自己相交,但不一定要为凸四边形),并使得这个四边形的面积最大。请你帮小粽算出这个最大值是多少。
输入格式
第一行一个正整数
n 表示木桩的大小。
接下来
n 行,第 i 行位两个实数 xi,yi,描述了第
i 个木桩的坐标。
输出格式
输出一行一个实数,表示围出的最大的四边形的面积。保留三位小数。
输入样例1
5
0 0
1 0
1 1
0 1
0.5 0.5
输出样例1
1.000
样例2
点此下载。
数据范围及约定
20% 的数据满足
n ≤100;
60% 的数据满足
n ≤400;
80% 的数据满足
n ≤1500;
100% 的数据满足
n ≤5000,所有坐标都在 int 范围内。
提示
[显然,答案是在凸包上的]
[可以考虑枚举一条对角线,再设法确定另外两点的位置,例如注意到点的位置具有单峰性。]
[更可考虑求对角线与凸包的切点,利用单调性均摊复杂度]
为了帮助大家完成题目,我们提供了只包含了输入输出功能的程序模板,也提供了含有算法的大部分实现细节的程序。
你可以根据自己的实际情况,在这些程序的基础上进行作答,或不参考这些程序,这将与你的得分无关。
这些程序可以从【这里】下载。
特别提醒:对于 Java 语言,在提交时请删除程序中的所有中文字符,否则可能无法通过编译。