博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1113 Wall
阅读量:5119 次
发布时间:2019-06-13

本文共 964 字,大约阅读时间需要 3 分钟。

题目链接:

题目大意:给出点集和一个长度L,要求用最短长度的围墙把所有点集围住,并且围墙每一处距离所有点的距离最少为L,求围墙的长度。

解法:凸包+以L为半径的圆的周长。以题目中的图为例,两点之间的围墙长度之和正好就是凸包的长度,再加上每个点的拐角处(注意此处为弧,才能保证城墙距离点的距离最短)的长度。

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #define inf 0x7fffffff 8 #define exp 1e-10 9 #define PI 3.14159265410 using namespace std;11 int n,L;12 struct Point13 {14 double x,y;15 Point (double x=0,double y=0):x(x),y(y){}16 friend bool operator < (Point a,Point b)17 {18 if (a.x!=b.x) return a.x
1 && dcmp(cross(ch[m-1]-ch[m-2],p[i]-ch[m-1]))<=0) m--;42 ch[m++]=p[i];43 }44 int k=m;45 for (int i=n-2 ;i>=0 ;i--)46 {47 while (k>m && dcmp(cross(ch[k-1]-ch[k-2],p[i]-ch[k-1]))<=0) k--;48 ch[k++]=p[i];49 }50 ch[k++]=ch[0];51 if (n>1) k--;52 return k;53 }54 int main()55 {56 while (cin>>n>>L)57 {58 for (int i=0 ;i

 

转载于:https://www.cnblogs.com/huangxf/p/3704353.html

你可能感兴趣的文章
面向对象的设计原则
查看>>
Swift3.0服务端开发(三) Mustache页面模板与日志记录
查看>>
【转】 FPGA设计的四种常用思想与技巧
查看>>
EntityFrameWork 实现实体类和DBContext分离在不同类库
查看>>
新手算法学习之路----二叉树(在一个二叉查找树中插入一个节点)
查看>>
autopep8
查看>>
GIT在Linux上的安装和使用简介
查看>>
基于C#编程语言的Mysql常用操作
查看>>
s3c2440实验---定时器
查看>>
MyEclipse10安装SVN插件
查看>>
[转]: 视图和表的区别和联系
查看>>
Regular Experssion
查看>>
图论例题1——NOIP2015信息传递
查看>>
uCOS-II中的任务切换-图解多种任务调度时机与问题
查看>>
CocoaPods的安装和使用那些事(Xcode 7.2,iOS 9.2,Swift)
查看>>
Android 官方新手指导教程
查看>>
幸运转盘v1.0 【附视频】我的Android原创处女作,请支持!
查看>>
UseIIS
查看>>
集合体系
查看>>
vi命令提示:Terminal too wide
查看>>