bzoj1069 凸包 旋轉卡殼

2021-07-24 02:17:52 字數 1275 閱讀 3842

問題:在若干個點中取四個點,求圍成的四邊形的最大面積。

思路:先求個凸包,n^2 列舉對角線,然後旋轉卡殼o(1) 更新左右邊界即可。

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

const

int inf=0x7fffffff;

const

int n =2e3+10;

int n,m,k;

const

double esp =1e-6;

int sgn(double x)

struct point

double x,y;

point(){}

point(double x,double y):x(x),y(y){}

point operator + (point o)

point operator - (point o)

point operator * (double len)

double

operator * (point o)

double

operator / (point o)

double dis()

bool

operator

< (point o)

void out()

}p[n],cv[n];

double det(point a,point b,point c)

double dot(point a,point b,point c)

point rot(point p,double a)

const

double pi = acos(-1.0);

bool cmp(point a,point b)

int graham()

return tot-1;

}int main()

}res/=2;

printf("%.3lf\n",res);

}return

0;}

BZOJ 1069 凸包 旋轉卡殼

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

BZOJ 1069 求凸包 旋轉卡殼

思路 求凸包 先按照x軸排個序 從左往右掃一遍 找到上凸殼 用叉積 再從右往左掃一遍 求下凸殼 搞個旋轉卡殼就好啦 嗯 我手懶 用的c complex庫 巨好用!by siriusren include include include using namespace std define cplex...

BZOJ 1069 求凸包 旋轉卡殼

思路 求凸包 先按照x軸排個序 從左往右掃一遍 找到上凸殼 用叉積 再從右往左掃一遍 求下凸殼 搞個旋轉卡殼就好啦 嗯 我手懶 用的c complex庫 巨好用!by siriusren include include include using namespace std define cplex...