Time:2016.07.19
Author:xiaoyimi
转载注明出处谢谢


传送门
思路:求凸包模板题,找个时间加深理解
代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#define eps 1e-5
using namespace std;
int n;
struct Vec{double x,y;Vec(double X=0,double Y=0){x=X;y=Y;}
};
typedef Vec Point;
Point p[100003],ch[100003];
int dcmp(double p)
{if (fabs(p)<=eps) return 0;return p>0?1:-1;
}
Vec operator +(Vec a,Vec b){return Vec(a.x+b.x,a.y+b.y);}
Vec operator -(Vec a,Vec b){return Vec(a.x-b.x,a.y-b.y);}
Vec operator *(Vec a,double p){return Vec(a.x*p,a.y*p);}
Vec operator /(Vec a,double p){return Vec(a.x/p,a.y/p);}
bool operator <(Point a,Point b){return a.x<b.x;}
double Cross(Vec a,Vec b){return a.x*b.y-a.y*b.x;}
double DisPP(Point a,Point b){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}
double ConvexHull(Point *p,Point *ch,int n)
{sort(p,p+n);int k,sum=0;double ans=0;for (int i=0;i<n;i++){while (sum>1&&dcmp(Cross(ch[sum-1]-ch[sum-2],p[i]-ch[sum-2]))>=0) sum--;ch[sum++]=p[i];}k=sum;for (int i=n-2;i>=0;i--){while (sum>k&&dcmp(Cross(ch[sum-1]-ch[sum-2],p[i]-ch[sum-2]))>=0) sum--;ch[sum++]=p[i];}if (n>0) sum--;for (int i=0;i<sum;i++)ans+=DisPP(ch[i],ch[(i+1)%sum]);return ans;
}
main()
{scanf("%d",&n);for (int i=0;i<n;i++)scanf("%lf%lf",&p[i].x,&p[i].y);printf("%.1lf",ConvexHull(p,ch,n));
}

【codevs1298】凸包周长,计算几何相关推荐

  1. [codevs 1298] 凸包周长 [codevs 3201] 奶牛代理商 XI

    题解: 今天开始学习计算几何. 这是一道计算几何求凸包周长的模板题,采用Andrew算法. 第二道题改下输出即可. 最后凸包周长的求法注意第一个点和最后一个点是同一个. 代码 100ms 3MB #i ...

  2. [WIKIOI1298]凸包周长[裸凸包]

    http://www.wikioi.com/problem/1298/ 这是题目. 是一道裸的凸包算法题,但是我一开始还是写WA了.先贴代码 1 #include <cstdio> 2 # ...

  3. 模板:二维凸包(计算几何)

    所谓凸包,就是一个凸出来的包 (逃) 前言 解析集合的第一课. 关键特征:周长最小.此时一定是凸包. 解析 定义 凸包:在平面上能包含所有给定点的最小凸多边形叫做凸包. 性质:凸包的周长是所有能包含给 ...

  4. HDU 1348 Wall ( 凸包周长 )

    链接:传送门 题意:给出二维坐标轴上 n 个点,这 n 个点构成了一个城堡,国王想建一堵墙,城墙与城堡之间的距离总不小于一个数 L ,求城墙的最小长度,答案四舍五入 思路:城墙与城堡直线长度是相等的, ...

  5. POJ - Wall(凸包周长)

    题目链接:http://poj.org/problem?id=1113 Time Limit: 1000MS Memory Limit: 10000K Description Once upon a ...

  6. poj 1873 The Fortified Forest (位运算枚举 + 凸包周长)

    题目链接:http://poj.org/problem?id=1873 大意:有一片N棵树的森林,要从中砍掉几棵树做成篱笆,把剩下的树围起来 输入:给N课树,每棵树的坐标是x,y,每棵树有一个vi和l ...

  7. The Fortified Forest UVALive - 5211 [二进制枚举+凸包周长]

    The Fortified Forest UVALive - 5211 题意:n棵树,每棵树对应有x,y,v,l分别代表横坐标,纵坐标,价值,砍这棵树能构成的篱笆长度.现在要求输出,在最小被砍价值的情 ...

  8. java经纬度凸包graham_计算几何-凸包-Graham算法

    一.点集有序化-水平排序 在计算几何中,点集往往无序,因此在计算前需要对点集进行排序,使得算法可以有序高效运行. 水平排序利用点在二维平面上固有的横纵坐标属性进行排序,只涉及点坐标的比较,与极坐标排序 ...

  9. HDU1392(凸包求周长模版)

    其实这个求凸包周长也算是模版. #include<iostream> #include<algorithm> #include<cstring> #include& ...

最新文章

  1. python怎么处理数据_python中scrapy处理项目数据的实例分析
  2. 重磅!GitHub发布开源负载均衡组件GLB
  3. Redis数据类型操作(五) —— Sorted Set
  4. 参加浙江中医药大学第十二届程序设计竞赛(ACM赛制)的小记
  5. docker 之 Dockerfile 实践
  6. WCF服务寄宿IIS与Windows服务 - C#/.NET
  7. pythonjava有什么区别_Python与JAVA有何区别?
  8. 标定_基于全景基础设施的多摄像机和3D激光雷达校准
  9. 【机器学习】Tensorflow基本使用
  10. HFSS19 官方中文教程系列 L07
  11. SQL注入攻击原理与几种防御方式
  12. Gdiplus的使用 gdi+
  13. 计算机附件中的超级终端,windows10系统中附件中没有超级终端怎么解决
  14. 支付宝免签在线支付要饭教程
  15. 天马行空脚踏实地,阿里巴巴有群百里挑一的天才应届生...
  16. 解决 Nginx Let's Encrypt HTTPS 证书 错误: 服务器缺少中间证书
  17. 一、开水白菜(steamed Chinese cabbage in supreme soup)
  18. 图像处理——分水岭算法
  19. 初探强化学习(7)基于模型的强化学习的应用综述
  20. windows使用模拟器

热门文章

  1. 关于【微服务】,你必须了解这些
  2. ZooKeeper的安装和API
  3. 红橙Darren视频笔记 界面优化与屏幕适配(上)
  4. Android笔记 style样式
  5. Service startService方式的服务
  6. Linux ping ipv66,IPV6的测试-ipv6网卡配置-ipv6的nginx配置-ipv6的ping测试-ipv6的curl测试...
  7. 如何将电子海图的航线导到gps上_电子海图(ECDIS)使用总结
  8. Spyder里面好像不能用汉字
  9. 计算机图形学E6——倒水问题emm和OpenGL没啥关系
  10. 从零开始学Pytorch(十七)之目标检测基础