計算幾何 最大土地面積

2021-06-05 00:22:53 字數 1261 閱讀 6925

description

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

input

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

output

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

sample input

50 0

1 01 1

0 10.5 0.5

sample output

1.000

此題考察graham演算法和旋轉卡殼演算法。

首先用graham求出凸包,然後列舉點a,用旋轉卡殼法求出它的對踵點b,再用旋轉卡殼法求出關於ab兩點的對踵點cd,取所有的以ab和cd為對角線的四邊形中面積最大的乙個,即為所求的結果。

時間複雜度o(n)。

accode:

#include #include #include #include using std::complex;

const char fi = "area.in";

const char fo = "area.out";

const int maxn = 2010;

const int max = 0x3f3f3f3f;

const int min = ~max;

const double zero = 1e-12;

typedef complex vec;

vec p[maxn];

vec res[maxn];

int n, top = 1;

void init_file()

void readdata()

return;

}int cmp(const void *a, const void *b)

template _tp outer_product(const complex <_tp> &a,

const complex <_tp> &b)

void graham()

int tmp = top;

res[++top] = p[n - 2];

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

return;

}void work()

printf("%.3lf\n", ans / 2.);

return;

}int main()

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

首先講一波錯誤的想法 來自wcr dalao 為什麼要去找最遠點對呢?反例太好找了啊!好的講講正解,首先要找最大面積,肯定要在凸包上去找四個點 證明等我思考出來就更傳送門 然後我們發現 哎呀這個點數怎麼才2k啊,哇直接列舉所有對角線不就行了嗎?然後我們再感性理解一下 在對角線兩邊,三角形的面積呈單峰...

計算幾何 凸包 SCOI2007最大土地面積

在某塊平面土地上有n個點,你可以選擇其中的任意四個點,將這片土地圍起來,當然,你希望這四個點圍成 的多邊形面積最大。n 2000 比較基礎的計算幾何 複習題 誤 首先,很容易證明一點 所選擇的點一定位於凸包上。因為如果存在最大四邊形使得點不全在凸包上,可以將不在凸包上的點外延,得到更大的凸包 如下圖...

BZOJ 1069 最大土地面積

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