zoukankan      html  css  js  c++  java
  • bzoj1069

    题意:

    给你n个点,要求4个点

    他们组成的面积最大

    题解:

    计算几何早已忘光

    凸包卡壳

    旋转

    代码:

    #include<bits/stdc++.h>
    typedef long long ll;  
    const int N=2005;  
    using namespace std;  
    int n,top;  
    double ans;  
    struct data{double x,y;}p[N],s[N];  
    double dcmp(double a)  
    {  
        if (fabs(a)<=1e-8) return 0;  
        else return a>0?1:-1;  
    }  
    double dis(data a,data b)  
    {  
        return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);  
    }  
    data operator -(data a,data b)  
    {  
        return (data){a.x-b.x,a.y-b.y};  
    }  
    double operator *(data a,data b)  
    {  
        return a.x*b.y-a.y*b.x;  
    }  
    int operator <(data a,data b)  
    {  
        int t=dcmp((p[1]-a)*(p[1]-b));  
        if (t==0) return dis(p[1],a)<dis(p[1],b);  
        else return t>0;  
    }   
    int main()  
    {  
        scanf("%d",&n);  
        for (int i=1;i<=n;i++) scanf("%lf%lf",&p[i].x,&p[i].y);  
        int t=1;  
        for (int i=2;i<=n;i++)
         if (p[i].y<p[t].y||(p[i].y==p[t].y&&p[i].x<p[t].x)) t=i;  
        swap(p[t],p[1]);  
        sort(p+2,p+n+1);  
        s[++top]=p[1];s[++top]=p[2];  
           for (int i=3;i<=n;i++)  
         {  
            while (top>1&&dcmp((p[i]-s[top-1])*(s[top]-s[top-1]))>=0) top--;  
            s[++top]=p[i];  
         }   
        s[top+1]=s[1];  
        for (int x=1;x<=top-1;x++)  
         {  
            int a=x%top+1,b=(x+2)%top+1;  
            for (int y=x+2;y<=top;y++)  
             {  
                while (a%top+1!=y&&dcmp((s[a+1]-s[x])*(s[y]-s[x])
                -(s[a]-s[x])*(s[y]-s[x]))>0) a=a%top+1;  
                while (b%top+1!=x&&dcmp((s[y]-s[x])*(s[b+1]-s[x])
                -(s[y]-s[x])*(s[b]-s[x]))>0) b=b%top+1;  
                ans=max(ans,(s[a]-s[x])*(s[y]-s[x])+(s[y]-s[x])*(s[b]-s[x]));  
             }   
         }  
        printf("%.3lf
    ",ans/2.0);  
        return 0;  
    }  
  • 相关阅读:
    Sectong日志分析
    风暴中心
    安全趋势:
    Mysql table ful
    linux service命令常见使用方法
    client denied by server configuration
    Ubuntu配置apache
    O2O助汪峰成功逆袭,汪峰最终上头条了
    Android切图注意事项
    2014/08/23——OJ及相关站点打开速度非常慢,训练计划login直接error!
  • 原文地址:https://www.cnblogs.com/xuanyiming/p/8446753.html
Copyright © 2011-2022 走看看