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

hdu 1348【凸包模板】

时间:2018-03-03 23:29:16      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:algorithm   space   ++   int   sort   can   3.1   puts   str   

#include<iostream>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=1005;
const double eps=1e-8;
int T,n,r,w,top;
struct dian
{
    double x,y;
    dian(double X=0,double Y=0)
    {
        x=X,y=Y;
    }
    dian operator + (const dian a) const
    {
        return dian(x+a.x,y+a.y);
    }
    dian operator - (const dian a) const
    {
        return dian(x-a.x,y-a.y);
    }
}p[N],s[N],d;
int cj(dian a,dian b)
{
    return a.x*b.y-a.y*b.x;
}
double dis(dian a,dian b)
{
    return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
bool cmp(const dian &a,const dian &b)
{
    double ar=cj(a-d,b-d);
    return (ar>0)||((ar==0)&&a.x<b.x);
}
int main()
{
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&n,&r);
        d.x=d.y=10000;top=0;
        for(int i=1;i<=n;i++)
        {
            scanf("%lf%lf",&p[i].x,&p[i].y);
            if(p[i].x<d.x||(p[i].x==d.x&&p[i].y<d.y))
                d=p[i],w=i;
        }//cout<<endl<<d.x<<" "<<d.y<<endl;
        n--;
        for(int i=w;i<=n;i++)
            p[i]=p[i+1];
        sort(p+1,p+1+n,cmp);
        // for(int i=1;i<=n;i++)
            // printf("%f %f\n",p[i].x,p[i].y);
        s[++top]=d,s[++top]=p[1];
        for(int i=2;i<=n;i++)
        {
            while(top>1&&cj(s[top]-p[i],s[top-1]-p[i])>=0)
                top--;
            s[++top]=p[i];
        }
        double ans=2.0*3.1415926*(double)r;//cout<<ans<<endl;
        s[0]=s[top];
        for(int i=1;i<=top;i++)
            ans+=dis(s[i-1],s[i]);//,cout<<s[i].x<<" "<<s[i].y<<endl;
        printf("%.0lf\n",ans);
        if(T)
            puts("");
    }
    return 0;
}

hdu 1348【凸包模板】

标签:algorithm   space   ++   int   sort   can   3.1   puts   str   

原文地址:https://www.cnblogs.com/lokiii/p/8503207.html

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