首页 > 代码库 > (凸包模板)(刘汝佳)
(凸包模板)(刘汝佳)
struct point
{
int x,y;
} p[N],stack[N];
bool cmp(point A,point B)
{
if(A.y==B.y)return A.x<B.x;
return A.y<B.y;
}
int cross(point A,point B,point C)
{
return (B.x-A.x)*(C.y-A.y)-(C.x-A.x)*(B.y-A.y);
}
void graham()
{
sort(p,p+n,cmp);
int i;
top=0;
for(i=0; i<n; i++)
{
while(top>1&&cross(stack[top-2],stack[top-1],p[i])<0)
{
top--;
}
stack[top++]=p[i];
}
int t=top;
for(i=n-2; i>=0; i--)
{
while(top>t&&cross(stack[top-2],stack[top-1],p[i])<0)
top--;
stack[top++]=p[i];
}
if(n>1)
top--;
}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。