SCOI2007 最大土地面積

2022-02-28 15:36:48 字數 1415 閱讀 7458

time limit: 1 sec  memory limit: 128 mb

submit: 3998  solved: 1620

[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

[submit][status][discuss]

首先我們可以考慮到如果我們取到了乙個最大的四邊形,那麼這個四邊形的四個頂點一定是這些點凸包上的點。也就是說,我們需要先求出這些點的凸包。

那麼求出來了之後呢?我們很明顯不能暴力求。。。複雜度明顯是n^4級別。那麼我們應該怎麼求呢?考慮四邊形性質,可以沿著對角線分成兩個三角形,我們只需列舉對角線即可,然後旋轉卡殼,求出兩邊最大三角形的面積求和即可。三角形的面積可以是這個三角形構成平行四邊形的面積/2,所以用叉積就可以方便求出。

#include#include

#include

#include

#include

#include

#define ll long long

#define inf 50000000

#define re register

#define maxn 5005

using

namespace

std;

struct

node;

node a[maxn],stackk[maxn];

double

xx,yy;

intn,top;

inline

intread()

inline

bool

cmp(node a,node b)

inline

double

cross(node a,node b,node c)

inline

double

js(node a,node b)

inline

bool

cmp1(node a,node b)

intmain()

stackk[++top]=a[1

];

double ans=0

;

inta,b;

for(re int x=1;x<=top;x++)

}printf(

"%.3lf

",ans/2

);}

SCOI2007 最大土地面積

嘟嘟嘟 無意間看到了乙個計算幾何。n 2000 就很愉快了。列舉求完凸包後 o n 2 列舉對角線,然後另兩個點用旋轉卡殼維護就完事了。結果資料 或是題意 坑人,有的有重複的點,如果選了兩個重複的點的話就算成三角形了 憑什麼 所以應該求乙個最簡凸包 就是點最少 哎,本來十幾分鐘就寫完了的,因為這個坑...

SCOI2007 最大土地面積

題意 從n個點裡選4個點圍成乙個四邊形,求四邊形的最大面積。n leq 2000 題解 列舉對角線,預處理每條對角線左邊 右邊的面積最大點,類似於旋轉卡殼。複雜度 o n include define maxn 5005 define maxm 500005 define inf 0x7ffffff...

SCOI2007 最大土地面積

題目 bzoj1069 洛谷p4166。題目大意 平面上給定n個點,讓你選4個點,使得其圍成的多邊形面積最大。求這個面積。解題思路 首先顯然的,要使面積最大,則點肯定在凸包上。然後,由於資料較小 n leqslant 1500 我們列舉四邊形對角線的兩個點,然後相當於在對角線兩側分別找1個點使得三個...