bzoj1069 SCOI2007 最大土地面積

2022-05-02 04:27:09 字數 1287 閱讀 5813

在某塊平面土地上有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...