HDU 2202最大三角形
来源:互联网 发布:阿里云 cdn combo请求 编辑:程序博客网 时间:2024/05/21 16:30
#include <cstdio>#include <cstring>#include <cmath>#include <iostream>#include <algorithm>using namespace std;const int maxn=50005;struct node{ int x,y;}e[maxn],res[maxn];int cmp(node a,node b){ if(a.x==b.x)return a.y<b.y; return a.x<b.x;}int cross(node a,node b,node c){ return (a.x-c.x)*(b.y-c.y)-(b.x-c.x)*(a.y-c.y);}int convex(int n){ int top = -1; res[++top] = e[0]; res[++top] = e[1]; for(int i=2;i<n;i++) { while(top && cross(res[top],e[i],res[top-1])<=0) top--; res[++top] = e[i]; } int midtop = top; for(int i=n-2;i>=0;i--) { while(top>midtop && cross(res[top],e[i],res[top-1])<=0) { top--; } res[++top] =e[i]; } return top;}int main(){ int n; while(scanf("%d",&n)!=EOF) { int i,j,k,x,y,m; for(i=0;i<n;i++) scanf("%d%d",&e[i].x,&e[i].y); sort(e,e+n,cmp); m=convex(n); int ans=0; for(i=0;i<m;i++) for(j=i+1;j<m;j++) for(k=j+1;k<m;k++) ans=max(ans,cross(res[j],res[k],res[i])); printf("%.2lf\n",0.5*ans); } return 0;}/* 水平序的Andrew算法,求凸包。时间复杂度O(n) 最大三角形的三个顶点必定在凸包上,枚举即可。 向量积:a×b=x1*y2-x2*y1;当a×b>0时b在a的逆时针方向,a×b<0时b在顺时针方向,a×b=0时共线 |a×b|=|a|*|b|*sin<a,b>,可以求三角形面积。*/
0 0
- hdu 2202 最大三角形
- HDU 2202最大三角形
- HDU 2202 求最大三角形
- hdu acm 2202 最大三角形
- HDU 2202 最大三角形(求凸包中最大三角形面积)
- HDU 2202 最大三角形 【凸包+枚举】
- HDU 2202(凸包内最大三角形面积)
- hdu 2202 最大三角形 (旋转卡壳)
- 最大三角形 HDU
- hdu 2202 最大三角形(凸包模板)
- hdu 2202 最大三角形 凸包+向量积
- hdu 2202 最大三角形_凸包模板
- HDU 2202 最大三角形 (凸包+旋转卡壳)
- hdu 2202 最大三角形 凸包的性质
- HDU 2022 最大三角形(点集合中最大三角形)
- 计算几何 ( 求凸包,计算三角形面积 )——最大三角形 ( HDU 2202 )
- 最大三角形
- 最大三角形
- C#调用C++生成的dll获取CPU序列号(二)
- 有你想玩的吗?2014,火爆新游大盘点
- 使用git管理自己的代码--简单使用流程
- 树的直径,树的重心,树的分治
- 警察殴打未成年人
- HDU 2202最大三角形
- Qt绘制2d
- 杂七杂八
- java的垃圾回收机制
- 单位工作了7年,去年生病住院半年出院后不
- hdu4865 Peter's Hobby 2014 Multi-University Training Contest 1
- Address already in use: JVM_Bind <null>:80
- 页面缓存处理
- 基于Qt5.x发布程序包和安装包