bzoj1069 SCOI2007 最大土地面積

2022-09-07 23:45:30 字數 2006 閱讀 7133

description

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

的多邊形面積最大。

input

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

output

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

sample input

5 0 0

1 0

1 1

0 1

0.5 0.5

sample output

1.000

hint

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

分析:

明確我們要找的點一定在凸包上,

二話不說先來乙個凸包

注意:凸包的板子不要打錯了

這樣我們在凸包上就可以卡殼了

我們列舉四邊形的對角線,在四邊形的兩側找到距離對角線最遠的兩個點

計算這樣的四邊形的面積,取max

因為距離最遠的點也是單調的,所以時間o(n^2)

很奇怪我第一次t了

看一下怎麼找距離最遠的點吧

double k=fabs(cross(po[sta[p2]]-po[sta[i]],po[sta[p1+1]]-po[sta[i]]))

-fabs(cross(po[sta[p2]]-po[sta[i]],po[sta[p1]]-po[sta[i]]));

if (dcmp(k)<=0) break;

else p1++; //p1+1離ip2更遠

k是i和p2(對角線)分別和p1+1,p1構成的三角形的面積差

如果k>0說明p1距離對角線更遠

#include

#include

#include

#include

#include

using

namespace

std;

const

double inf=1e10;

const

double eps=1e-10;

const

int n=2010;

struct node

};node po[n];

int n,sta[n],top;

int dcmp(double x)

int cmp(const node &a,const node &b)

node operator -(const node &a,const node &b)

node operator *(const node &a,const

double &b)

node operator /(const node &a,const

double &b)

bool

operator ==(const node &a,const node &b)

double mx(double a,double b)

double cross(node x,node y)

double dot(node x,node y)

void tub()

int k=top;

for (i=n-1;i>=1;i--)

if (n>1) top--;

}double len(node a,node b,node p)

double ss(node a,node b,node c,node d)

void solve()

while (1)

//if (p3>=top+i) break; //轉了超過一圈

ans=mx(ans,ss(po[sta[i]],po[sta[p1]],po[sta[p2]],po[sta[p3]])); //順時針 } }

printf("%0.3lf",ans);

}int main()

BZOJ1069 SCOI2007 最大土地面積

資料範圍2000,我們如果列舉對角線然後走呢,是不是n 3呢,仔細一想不是。因為面積是乙個單增的過程,所以建完凸包以後列舉對角線複雜度就是n 2的。因此這題我們就從乙個四邊形面積轉化為兩個三角形面積。by 大奕哥 1 include2 using namespace std 3 typedef do...

bzoj1069 SCOI2007 最大土地面積

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

bzoj1069 SCOI2007 最大土地面積

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