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個點使得三個...