洛谷4166 最大土地面積(計算幾何)

2022-08-21 03:00:16 字數 798 閱讀 4990

首先講一波錯誤的想法(來自wcr dalao)

為什麼要去找最遠點對呢?反例太好找了啊!

好的講講正解,首先要找最大面積,肯定要在凸包上去找四個點(證明等我思考出來就更傳送門)。

然後我們發現:哎呀這個點數怎麼才2k啊,哇直接列舉所有對角線不就行了嗎?

然後我們再感性理解一下:在對角線兩邊,三角形的面積呈單峰函式。

所以就可以直接上暴力去找,複雜度o(n^2)。

#includeusing namespace std;

const int maxn=2010;

int n,last;

struct point

friend inline point operator+(const point &a,const point &b)

friend inline point operator-(const point &a,const point &b)

friend inline double operator*(const point &a,const point &b)

friend inline double pot(const point &a,const point &b)

inline double dist()

}p[maxn],q[maxn];

bool cmp(point a,point b)

void graham()

}double calc()

} return ret/2;

}int main()

計算幾何 最大土地面積

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

P4166 SCOI2007 最大土地面積

顯然選的四個點是在凸包上的,我們先求出凸包。考慮列舉對角線 i,j 發現當 i 固定,j 沿逆時針旋轉時對角線兩端的那兩個點時單調的,因此用旋轉卡殼維護即可。code includeusing namespace std const int maxn 2010 const double eps 1e...

BZOJ 1069 最大土地面積

給出平面上的一些點,找出四個點使這四個點圍成的面積最大。首先這四個點肯定在凸包上 顯然。所以求出凸包後 n 地列舉乙個點,之後利用旋轉卡殼求出與這個點相距最遠的點,然後列舉所有點找出兩邊三角形的最大面積取最大即可。這題主要是板子吧,背會就好背會就好 include include include i...