码迷,mamicode.com
首页 > 其他好文 > 详细

二维凸包模板

时间:2014-07-03 20:28:07      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   for   div   

double cross(Point a,Point b)
{
    return a.x*b.y-a.y*b.x;
}
double mul(Point p0,Point p1,Point p2)
{
    return cross(p1-p0,p2-p0);
}
double dis(Point a)
{
    return sqrt(a.x*a.x+a.y*a.y);
}
bool cmp(Point a,Point b)
{
    if(dcmp(mul(p[0],a,b))==0)
        return dis(a-p[0])<dis(b-p[0]);
    else
        return dcmp(mul(p[0],a,b))>0;
}
int Graham(int n)
{
    int i,k = 0,top;
    Point tmp;
    for(i = 0 ; i < n; i++)
    {
        if(p[i].y<p[k].y||(p[i].y==p[k].y&&p[i].x<p[k].x))
            k = i;
    }
    if(k!=0)
    {
        tmp = p[0];
        p[0] = p[k];
        p[k] = tmp;
    }
    sort(p+1,p+n,cmp);
    ch[0] = p[0];
    ch[1] = p[1];
    top = 1;
    for(i = 2; i < n ; i++)
    {
        while(top>0&&dcmp(mul(ch[top-1],ch[top],p[i]))<0)
            top--;
        top++;
        ch[top] = p[i];
    }
    return top;
}

 

二维凸包模板,布布扣,bubuko.com

二维凸包模板

标签:style   blog   color   os   for   div   

原文地址:http://www.cnblogs.com/shangyu/p/3821182.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!