bool cmp_x(const point &a,const point &b){
if(a.x!=b.x)
return a.x<b.x;
return a.y<b.y;
}
vector<point> ps;
vector<point> convex_hull(){
int n=(int)ps.size();
sort(ps.begin(),ps.end(),cmp_x);
int k=0;
vector<point> qs(n*2);
for(int i=0;i<n;i++){
while(k>1&&cmp(det(qs[k-1]-qs[k-2],ps[i]-qs[k-1]))<=0){
k--;
}
qs[k++]=ps[i];
}
for(int i=n-2,t=k;i>=0;i--){
while(k>t&&cmp(det(qs[k-1]-qs[k-2],ps[i]-qs[k-1]))<=0){
k--;
}
qs[k++]=ps[i];
}
qs.resize(k-1);
return qs;
}
计算几何模板——凸包
最新推荐文章于 2023-12-19 22:43:47 发布