凸包裸题。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<vector>
#include<algorithm>
#include<set>
#include<cmath>
#include<queue>
using namespace std;
#define rep(i,j,k) for(i=j;i<=k;++i)
#define per(i,j,k) for(i=j;i>=k;--i)
#define sqr(x) ((x)*(x))
#define G getchar()
#define LL long long
#define pdd pair<double,double>
#define mkp make_pair
#define X first
#define Y second
#define N 105
#define inf 10000001
#define eps 0.000001
int n,cnt;
double sum;
pdd p[N],ans[N];
pdd operator -(pdd x,pdd y){return mkp(x.X-y.X,x.Y-y.Y);
}
double Cross(pdd x,pdd y){return x.X*y.Y-x.Y*y.X;
}
int dcmp(double x){if(fabs(x)<eps)return 0;return x<0?-1:1;
}
double dist(pdd x,pdd y){return sqrt(sqr((x.X-y.X))+sqr(x.Y-y.Y));
}
bool cmp(pdd x,pdd y){int flg=dcmp(Cross(x-p[1],y-p[1]));return flg?flg>0:dist(x,p[1])<dist(y,p[1]);
}
int main(){double x,y;int i;while(1){scanf("%d",&n);if(!n)break;rep(i,1,n){scanf("%lf%lf",&x,&y);p[i]=mkp(x,y);if(p[1]>p[i])swap(p[1],p[i]);}if(n==1){puts("0.00");continue;}if(n==2){printf("%.2lf\n",dist(p[1],p[2]));continue;}sort(p+2,p+n+1,cmp);cnt=2;ans[1]=p[1];ans[2]=p[2];rep(i,3,n){while(dcmp(Cross(ans[cnt]-ans[cnt-1],p[i]-ans[cnt]))<0)--cnt;ans[++cnt]=p[i];}sum=0;rep(i,2,cnt)sum+=dist(ans[i],ans[i-1]);printf("%.2lf\n",dist(ans[1],ans[cnt])+sum);}return 0;
}

1392 - Surround the Trees相关推荐

  1. hdu 1392 Surround the Trees

    凸包模板 #include<cstdio> #include<cstring> #include<iostream> #include<string> ...

  2. 【解题报告】【HDOJ1392】【Graham凸包】Surround the Trees

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1392 典型凸包 1.当只有一个点时 输出时0.00 2.当只有两个点时 输出时两个点的距离 3.当n& ...

  3. hdu-1392 Surround the Trees poj Rope (简单凸包)

    hdu  : http://acm.hdu.edu.cn/showproblem.php?pid=1392 题意:给你n个数的坐标,用一根绳子把它们围起来,问你需要多长的绳子? (当数的个数为2时特判 ...

  4. 计算几何-经典算法-凸包

    在学习了一些有关计算机几何的基础知识和一些基本工具之后要快速的解决一些简单的几何问题,如两点之间的距离.两线段的交点个数等等是可以轻松应付的,但是对于复杂点的几何问题,我们还是要有更好的算法,这样才可 ...

  5. 杭电OJ分类题目(3)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(3) HDU Computational Ge ...

  6. 凸包——Graham-Scan算法

    凸包(Convex Hull)是一个计算几何(图形学)中的概念. 在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包.X的凸包可以用X内所有点(X1,-Xn)的凸组合来构造 ...

  7. 凸包 Graham扫描法 TOJ 1255 Surround the TreesTOJ 3100 女生寝室的围墙

    凸包算法有很多种... 我就学了一种Graham扫描法..以不变应万变... 1.把所有点放在二维坐标系中,则纵坐标最小的点一定是凸包上的点,如图中的P0. 2.把所有点的坐标平移一下,使 P0 作为 ...

  8. 杭电oj题目题型分类(转)

    1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 Hero In Maze 广度搜索 ...

  9. HDOJ题目分类大全

    版权声明:本文为博主原创文章,欢迎转载,转载请注明本文链接! https://blog.csdn.net/qq_38238041/article/details/78178043 杭电里面有很多题目, ...

最新文章

  1. 发布本人汉化最后一个CommunityServer的版本,blog名称也改为 Asp.net源码交流中心...
  2. [转]Docker学习之四:使用docker安装mysql
  3. 建立适合大数据成功的团队
  4. wxWidgets:wxClipboard类用法
  5. 解决开机POST提示Strike tne F1 key to continue,F2 to run the setup utility
  6. IIS下配置PHP遇到Service Unavailable的解决方法
  7. kaggle入门项目:Titanic存亡预测(三)数据可视化与统计分析
  8. 2分钟,我把网站性能优化了3倍!
  9. python开方运算符_Pytorch Tensor基本数学运算详解
  10. 信息学奥赛C++语言:等级化的成绩
  11. [Oracle]如何查看一个数据文件是否是自动扩展
  12. (36)Gulp 构建资源(图片)文件
  13. 7-Arco大讲堂(二)
  14. Codeup1085: 阶乘的和
  15. sql文件查看器_ACCDB MDB Explorer for Mac(MDB文件查看器) v2.4.7
  16. 64位计算机很慢,win7 64位旗舰版电脑网速太慢怎么解决
  17. xp如何删除计算机管理员用户账户,“WINXP系统除Administrator以外只有一个管理员账户时,此帐户默认无法删除,如何删除”的解决方案...
  18. 鸿蒙 华为watch gt3手表hello world
  19. Python报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x8c in position 20: illegal multibyte...
  20. 解读CNAS更换徽标和认可标识

热门文章

  1. Zabbix监控端口,异常发送邮件
  2. 超好用的免费刻录软件ImgBurn:支持iso,cd/dvd,中文
  3. 切换引擎使用的批处理文件升级版, 好看了, 但是, 核心部分其实还是非常笨
  4. 校园VOD影视服务器架设技术文档   部分设置省略 请来信索取
  5. 电脑显示没有被指定在上运行_.dll没有被指定在windows上运行怎么办
  6. html自动序号函数代码,自定义自动编号函数
  7. 表格的边框合并为一个单一的边框
  8. Vue移动端五星好评组件封装(精确到0.1)
  9. 自己创造一个截图工具?一行字母就行
  10. [论文学习]:Mean Curvature Skeletons