BZOJ 1069 最大土地面積(旋轉卡殼)

2021-08-04 07:08:40 字數 1023 閱讀 9400

time limit: 1 sec  

memory limit: 128 mb

submit: 3475  

solved: 1385 [

submit][

status][

discuss]

在某塊平面土地上有n個點,你可以選擇其中的任意四個點,將這片土地圍起來,當然,你希望這四個點圍成

的多邊形面積最大。

第1行乙個正整數n,接下來n行,每行2個數x,y,表示該點的橫座標和縱座標。

最大的多邊形面積,答案精確到小數點後3位。

50 0

1 01 1

0 10.5 0.5

1.000

資料範圍 n<=2000, |x|,|y|<=100000

source

凸包問題的乙個拓展,經分析可知,這四個點一定在凸包上,具體證明就不多說了。。

剩下的就是列舉一條對角線就可以了,這裡便是旋轉卡殼的奇效了,具體分析見:

#include#include#include#include#include#include#include#include#include#includeusing namespace std;  

typedef long long ll;

#define inf 1000000000

#define mod 1000000007

#define maxn 1000010

#define lowbit(x) (x&-x)

#define eps 1e-10

struct node

a[maxn],st,q[maxn];

double cross(node a,node b,node c)

bool comp(node a,node b)

for(i=1;i<=top;i++)

}printf("%.3f\n",ans);

return 0;

}

BZOJ 1069 最大土地面積

給出平面上的一些點,找出四個點使這四個點圍成的面積最大。首先這四個點肯定在凸包上 顯然。所以求出凸包後 n 地列舉乙個點,之後利用旋轉卡殼求出與這個點相距最遠的點,然後列舉所有點找出兩邊三角形的最大面積取最大即可。這題主要是板子吧,背會就好背會就好 include include include i...

bzoj 1069 最大土地面積

題目大意 一些點,選四個點使這圍成的四邊形面積最大 思路 首先可以知道這些點一定在凸包上,然後graham求一下凸包 然後我們可以列舉對角線在兩邊找最遠的點 然而這樣複雜度爆了 所以我們可以利用旋轉卡殼的思想 列舉對角線的時候確定乙個點,然後旋轉另乙個點,如果確定了另外兩個點,則另外兩個點也一起轉 ...

bzoj1069 最大土地面積

在某塊平面土地上有n個點,你可以選擇其中的任意四個點,將這片土地圍起來,當然,你希望這四個點圍成 的多邊形面積最大。第1行乙個正整數n,接下來n行,每行2個數x,y,表示該點的橫座標和縱座標。最大的多邊形面積,答案精確到小數點後3位。50 0 1 01 1 0 10.5 0.5 1.000 資料範圍...