hdu 2202
来源:互联网 发布:淘宝金钻买家下一级别 编辑:程序博客网 时间:2024/06/13 20:23
OJ
#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>#include <cstdlib>using namespace std;#define N 50005int n;int ktoal;struct p{int x,y;void in(){scanf("%d%d",&x,&y);}};p ar[N];p fundation;int cmpy(p a,p b){if(a.y != b.y) return a.y<b.y;return a.x < b.x;}int squaredis(p a,p b){return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);}int mul(p a,p b,p c){return (a.x-c.x)*(b.y-c.y)-(b.x-c.x)*(a.y-c.y);}int cmp(const void * a,const void * b){struct p* aa = (p*) a;struct p * bb = (p*) b;int k = mul(*aa,*bb,fundation);if(k<0) return 1;else if(k==0&&squaredis(*aa,fundation)>= squaredis(*bb,fundation))return 1; return -1;}double area(int a,int b,int c){return fabs(1.0*mul(ar[a],ar[b],ar[c]))/2.0;}void grah(){ ktoal = 2;//ar[n] = fundation;for(int i = 3;i<n;i++){while((mul(ar[ktoal],ar[i],ar[ktoal-1])<=0)&&ktoal>=2) ktoal--;ar[++ktoal]= ar[i];}}double maxarea(){//double max = 0;double max = 0;/*int p,q;for(int i=0;i<n;i++){p = (i+1)%n;q = (i+2)%n;while(area(i,q,(q+1)%n)>area(i,p,q)) p = q,q = (q+1)%n;if(area(i,p,q)>max) max = area(i,p,q);}return max;*/for(int i=0;i<ktoal-1;i++)for(int j=i+1;j<ktoal;j++)for(int k=j+1;k<=ktoal;k++)if(area(i,j,k)>max) max = area(i,j,k);return max;}void init(){ while(scanf("%d",&n)!=EOF){for(int i=0;i<n;i++){ar[i].in();}if(n<=2) { printf("0.00\n");continue;}if(n==3){printf("%.2lf\n",area(0,1,2));continue;}sort(ar,ar+n,cmpy);fundation = ar[0];qsort(ar+1,n-1,sizeof(ar[0]),cmp);grah();printf("%.2lf\n",maxarea());}return ;}int main(){init();return 0;}
- hdu 2202
- hdu 2202
- hdu-2202
- hdu 2202 最大三角形
- 凸包---HDU 2202
- HDU 2202最大三角形
- HDU 2202 (旋转卡壳)
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- 对c#中范型的理解
- ubuntu 添加ed2k 关联
- ABAP实例:一个现金流量表的代码
- 深入浅出JNA--快速调用原生函数
- 那些年,我们读过的C、C++经典
- hdu 2202
- struts读书笔记(1)
- Asp.Net里的Cookies
- svn+apache集成环境配置
- [Coding]一些小心
- UVa 673 Parentheses Balance
- Tomcat源码分析(七)--单一启动/关闭机制(生命周期)
- javascript最全的10种跨域共享的方法
- 项目开发流程