HDU3934+凸包

來源:互聯網
上載者:User

題意:給定一些點,求最大三角形面積

/*凸包*/#include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<iostream>#include<queue>//#include<map>#include<math.h>using namespace std;typedef long long ll;//typedef __int64 int64;const int maxn = 1000005;const int inf = 0x7fffffff;const double pi=acos(-1.0);struct node{    int x,y;    bool operator <( const node & p ) const {        return y<p.y||(y==p.y&&x<p.x);    }};node pnt[ maxn ],res[ maxn ];int cross ( node sp,node ep,node op ){    return ( sp.x-op.x )*( ep.y-op.y )-( sp.y-op.y )*( ep.x-op.x );}int dis2( node a,node b ){    return ( a.x-b.x )*( a.x-b.x )+( a.y-b.y )*( a.y-b.y );}int garham( int n ){    int top=1;    sort( pnt,pnt+n );    if( n==0 ) return 0;    else res[ 0 ]=pnt[ 0 ];    if( n==1 ) return 1;    else res[ 1 ]=pnt[ 1 ];    if( n==2 ) return 2;    else res[ 2 ]=pnt[ 2 ];        for( int i=2;i<n;i++ ){        while( top>0&&cross( res[ top-1 ],pnt[ i ],res[ top ] )>=0 )            top--;        res[ ++top ]=pnt[ i ];    }        int len=top;    res[ ++top ]=pnt[ n-2 ];    for( int i=n-3;i>=0;i-- ){        while( top!=len&&cross( res[ top-1 ],pnt[ i ],res[ top ] )>=0 )            top--;        res[ ++top ]=pnt[ i ];    }        return top;}int main(){    int n;    while( scanf("%d",&n)!=EOF ){        for( int i=0;i<n;i++ )            scanf("%d%d",&pnt[ i ].x,&pnt[ i ].y);        int cnt=garham( n );        double ans=0;        for( int i=0;i<cnt;i++ ){            for( int j=i+1;j<cnt;j++ ){                for( int k=j+1;k<cnt;k++ ){                    ans=max( ans,( 0.5*cross( res[ j ],res[ k ],res[ i ] ) ) );                }            }        }        printf("%.2lf\n",ans);    }    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.