swust 最小凸包的面积
来源:互联网 发布:淘宝手机端主图尺寸 编辑:程序博客网 时间:2024/05/12 12:42
http://acm.swust.edu.cn/problem/0249/
求凸包的最小的面积有一个公式:
知道公式,直接裸过;
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>using namespace std;const int maxn = 1000 + 10;#define INF 0x3f3f3f3f#define eps 10e-8//const int maxn = 1000 + 10;int n,m,k;struct Node{double x,y;double angles;}a[maxn];double distances(Node x,Node y){return sqrt((x.x - y.x) * (x.x - y.x) + (x.y - y.y) * (x.y - y.y));}double angle(Node s,Node x){return acos((x.x - s.x) / sqrt((x.x - s.x) * (x.x - s.x) + (x.y - s.y) * (x.y - s.y)));}Node s;bool cmp(Node x,Node y){if(fabs(x.angles - y.angles) < eps)return fabs(x.x - s.x) < fabs(y.x - s.x);return x.angles < y.angles;}double across_multi(Node p1,Node p2,Node p3){return (p1.x - p2.x)* (p3.y - p2.y) - (p1.y - p2.y) *(p3.x - p2.x);}double gramham(){s = a[1];for(int i = 2; i <= n; i ++){if(a[i].y < s.y || (a[i].y == s.y && a[i].x < s.x))s = a[i];}for(int i = 1; i <= n; i ++){if(a[i].x == s.x && a[i].y == s.y){a[i].angles = s.angles = 0;}else {a[i].angles = angle(s,a[i]);}}sort(a+1,a+n+1,cmp);//for(int i = 1; i <= n; i ++)//cout << a[i].x << " JJJ " << a[i].y << endl;Node st[maxn];if(n == 1)return 0;if(n == 2)return 0;int len = 1;st[len ++] = a[1];st[len ++] = a[2];st[len ++] = a[3];for(int i = 4; i <= n; i ++){while(across_multi(st[len -1],st[len -2],a[i]) <= 0)len --;st[len ++] = a[i]; }// for(int i = 1; i < len; i ++)// cout << a[i].x << " " << a[i].y << endl; double ans = 0; for(int i = 1; i < len - 1; i ++) { ans += (st[i].x * st[i + 1].y - st[i + 1].x * st[i].y) / 2;}return ans;}int main(){int Tcase;scanf("%d",&Tcase);while( Tcase --){scanf("%d",&n);for(int i = 1; i <= n; i ++)scanf("%lf%lf",&a[i].x,&a[i].y);double ans = gramham();printf("%.1f\n",ans);}return 0;}
0 0
- swust 最小凸包的面积
- swust oj凸包面积(0249)_分治法
- HDU 5251 矩形面积 (计算几何+旋转卡壳求覆盖凸包的最小矩形面积)
- 计算轮廓点的最小凸包像素面积,最小外接圆的快速方法
- 计算轮廓点的最小凸包像素面积,最小外接圆的快速方法
- 凸包的面积交,面积并。
- hdu5251 凸包模板,凸包最小外接矩形面积
- 百度之星初赛1006(计算几何:能包含凸包的最小矩形面积)
- uva 10173 凸包最小覆盖矩形面积
- poj 5251(凸包 旋转卡壳)最小矩形面积
- 二维凸包模板(凸包重心,周长,面积,直径,最大三角形,最小环绕矩形)
- 凸包并求凸包的面积
- Cows(poj3348凸包的面积)
- 凸包面积模板
- 凸包面积(0249)
- 求面积最小的多边形
- <模板><计算几何>凸包-旋转卡壳最小面积外接矩形
- 【最小矩形面积覆盖:凸包+旋转卡壳】UVA 10173Smallest Bounding Rectangle
- 使用Maven管理Oracle驱动包
- Linux软件安装,RPM与YUM
- 安卓四大组件之一service
- C#单元测试CI配置以及sonar单元测试覆盖率统计的配置
- 白话空间统计二十四:地理加权回归(五)
- swust 最小凸包的面积
- PLSQL Developer软件使用大全
- VC++ MFC DLL动态链接库编写详解
- 【JS】:JS中父页面与子页面传值
- leetcodeOJ 342. Power of Four
- Mysql数据库的基本操作
- 洛谷 P3369 【模板】普通平衡树(Treap/SBT)
- c++语法教程
- COleSafeArray