BZOJ 1069 求凸包 旋轉卡殼

2021-07-25 15:41:19 字數 822 閱讀 9474

思路:

求凸包:

先按照x軸排個序

從左往右掃一遍 找到上凸殼 (用叉積)

再從右往左掃一遍 求下凸殼

搞個旋轉卡殼就好啦~

嗯 我手懶

用的c++ complex庫

巨好用!

//by siriusren

#include

#include

#include

using namespace std;

#define cplexd complex

int n,q[4444];

double xx,yy;

cplexd ff[2222];

bool cmp(cplexd a,cplexd b)

int main()

sort(ff+1,ff+1+n,cmp);

q[1]=1,q[2]=2;int ta=2;

for(int i=3;i<=n;q[++ta]=i,i++)

while(ta>=2&&cj(q[ta],q[ta-1],i)>=0)ta--;

int ta2=ta;

for(int i=n-1;i;q[++ta]=i,i--)

while(ta>=ta2+1&&cj(q[ta],q[ta-1],i)>=0)ta--;

double ans=0.0;

for(int i=1,l=2,r=4;i1,r=i+3,i++)

for(int j=i+2;j1;j++)

printf("%.3f",ans/2);

}

BZOJ 1069 求凸包 旋轉卡殼

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

bzoj1069 凸包 旋轉卡殼

問題 在若干個點中取四個點,求圍成的四邊形的最大面積。思路 先求個凸包,n 2 列舉對角線,然後旋轉卡殼o 1 更新左右邊界即可。include include include include include include include include include include inclu...

BZOJ 1069 凸包 旋轉卡殼

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