BZOJ 1069 最大土地面積

2021-07-30 07:14:12 字數 1281 閱讀 5719

給出平面上的一些點,找出四個點使這四個點圍成的面積最大。

首先這四個點肯定在凸包上(顯然。。),所以求出凸包後

n 地列舉乙個點,之後利用旋轉卡殼求出與這個點相距最遠的點,然後列舉所有點找出兩邊三角形的最大面積取最大即可。

這題主要是板子吧,,背會就好背會就好

#include 

#include

#include

#include

#include

//背板子系列之凸包 + 旋轉卡殼

//by ssssssay

#define eps 1e-8

using

namespace

std;

const

int maxn = 5010;

struct node p[maxn], g[maxn];

int n;

double ans;

node operator - (node a, node b) ;}

node operator + (node a, node b) ;}

node operator * (node a, double x) ;}

node operator / (node a, double x) ;}

int dcmp(double x)

double cross(node a,node b)

bool comp(node a, node b)

double dot(node a,node b)

double len(node a)

double dis(node x,node a,node b)

double area(node a,node b,node c)

double calarea(node a,node b,int m)

return sum1 + (-sum2);

}int gra()

int k = m;

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

if(n > 1) m--;

// else m--;

return m;

}double roca(int m)

//這樣找到的是g[i]對應的對踵點g[now] 即距離g[i]最遠的點

temp = max(temp, calarea(g[i], g[now], m));

}return temp;

}int main()

bzoj 1069 最大土地面積

題目大意 一些點,選四個點使這圍成的四邊形面積最大 思路 首先可以知道這些點一定在凸包上,然後graham求一下凸包 然後我們可以列舉對角線在兩邊找最遠的點 然而這樣複雜度爆了 所以我們可以利用旋轉卡殼的思想 列舉對角線的時候確定乙個點,然後旋轉另乙個點,如果確定了另外兩個點,則另外兩個點也一起轉 ...

bzoj1069 最大土地面積

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

BZOJ 1069 最大土地面積(旋轉卡殼)

time limit 1 sec memory limit 128 mb submit 3475 solved 1385 submit status discuss 在某塊平面土地上有n個點,你可以選擇其中的任意四個點,將這片土地圍起來,當然,你希望這四個點圍成 的多邊形面積最大。第1行乙個正整數n...