计算几何大全:
ACM几何基础篇 | linxi's dream (gitee.io)
题单:
ZJNU22暑期专题 计算几何 - Virtual Judge (csgrandeur.cn)
凸包
int andrew(){
sort(a+1,a+1+n);
int len=0;
for (int i=1;i<=n;i++){
while (len>1&&sgn(cross(stk[len]-stk[len-1],a[i]-stk[len-1]))==-1) len--;
stk[++len]=a[i];
}
int k=len;
for (int i=n-1;i>=1;i--){
while (len>k&&sgn(cross(stk[len]-stk[len-1],a[i]-stk[len-1]))==-1) len--;
stk[++len]=a[i];
}
len--;//减掉头尾一样的点
return len;
}
旋转卡壳
void roca(){
int mx=0;
int j=3;
rep(i,1,len){
while (fabs(cross(sk[i]-sk[i+1],sk[j]-sk[i+1]))<fabs(cross(sk[i]-sk[i+1],sk[j+1]-sk[i+1]))){
j=j%len+1;
}
mx=max(mx,disf(sk[i],sk[j]));
}
cout<<mx<<endl;
}