首先講一波錯誤的想法(來自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...