在某塊平面土地上有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
正解:凸包+旋轉卡殼。
現在才學凸包和旋轉卡殼,感覺自己真的太菜了。。
這道題還是比較簡單的,首先我們可以想到這$4$個點一定在凸包上。那麼我們可以列舉對角線,然後把這個四邊形分成兩個三角形。
然後用旋轉卡殼算出兩邊對應最大的面積就行了。
1//it is made by wfj_2048~
2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include
13#define eps (1e-9)
14#define n (2010)
15#define il inline
16#define rg register
17#define ll long long
1819
using
namespace
std;
2021
intn,top;
2223
struct pointp[n],st[n];
2425 il point operator - (const point &a,const point &b);27}
2829 il double cross(rg point a,rg point b)
3031 il int cmp(const point &a,const point &b)
3536 il int
gi()
4344 il double
calc()53}
54return res/2;55
}5657int
main()
69 rg int la=top;
70for (rg int i=n-1;i;--i)
74 st[top+1]=st[1],printf("
%0.3lf\n
",calc()); return0;
75 }
BZOJ1069 SCOI2007 最大土地面積
資料範圍2000,我們如果列舉對角線然後走呢,是不是n 3呢,仔細一想不是。因為面積是乙個單增的過程,所以建完凸包以後列舉對角線複雜度就是n 2的。因此這題我們就從乙個四邊形面積轉化為兩個三角形面積。by 大奕哥 1 include2 using namespace std 3 typedef do...
bzoj1069 SCOI2007 最大土地面積
description 在某塊平面土地上有n個點,你可以選擇其中的任意四個點,將這片土地圍起來,當然,你希望這四個點圍成 的多邊形面積最大。input 第1行乙個正整數n,接下來n行,每行2個數x,y,表示該點的橫座標和縱座標。output 最大的多邊形面積,答案精確到小數點後3位。sample i...
bzoj1069 SCOI2007 最大土地面積
description 在某塊平面土地上有n個點,你可以選擇其中的任意四個點,將這片土地圍起來,當然,你希望這四個點圍成 的多邊形面積最大。input 第1行乙個正整數n,接下來n行,每行2個數x,y,表示該點的橫座標和縱座標。output 最大的多邊形面積,答案精確到小數點後3位。sample i...