计算几何入门3--poj1113Wall
来源:互联网 发布:产品成本分析软件 编辑:程序博客网 时间:2024/05/17 23:21
裸凸包……直接上代码……
#include<map>#include<set>#include<cmath>#include<queue>#include<cstdio>#include<vector>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int maxn=10000+10;const double eps=1e-12;int n,l,top=0;double ans;struct point{ double x,y;}p[maxn];point sta[maxn];bool cmp(const point &a,const point &b){ return a.x<b.x||(a.x==b.x&&a.y<b.y);}int comp(double x){ return fabs(x)<eps?0:x>0?1:-1;}double crossx(point a,point b,point c){//ab x ac return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y);}double cal(point a,point b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}int main(){ while (~scanf("%d%d",&n,&l)){ for (int i=1;i<=n;++i) scanf("%lf%lf",&p[i].x,&p[i].y); memset(sta,0,sizeof(sta)); sort(p+1,p+1+n,cmp); top=0; ans=0; sta[++top]=p[1]; sta[++top]=p[2]; for (int i=3;i<=n;++i){ while (top>1&&comp(crossx(sta[top-1],sta[top],p[i]))<0) top--; sta[++top]=p[i]; } int mid=top; sta[++top]=p[n]; sta[++top]=p[n-1]; for (int i=n-2;i>=1;i--){ while (top>mid&&comp(crossx(sta[top-1],sta[top],p[i]))<0) top--; sta[++top]=p[i]; } for (int i=2;i<=top;++i) ans+=cal(sta[i],sta[i-1]); //for (int i=1;i<=top;++i) printf("%lf %lf\n",sta[i].x,sta[i].y); //ans+=cal(sta[1],sta[top]); double Sy=2*l*3.1415926535; ans+=Sy; printf("%.0f\n",ans); }}
0 0
- 计算几何入门3--poj1113Wall
- POJ1113Wall(计算几何基础)
- poj1113Wall
- poj1113Wall
- uva579 计算几何入门
- poj2318计算几何入门
- 计算几何入门
- poj1113Wall(凸包周长计算)
- 【计算几何入门】poj 1269
- HDOJ1221 计算几何入门题
- UVA11178 计算几何入门题
- 计算几何入门题推荐
- poj1113Wall凸包入门题 模板
- 【计算几何】POJ 计算几何入门题目推荐
- 计算几何入门题推荐、计算几何题目合集
- 计算几何练习3
- POJ 计算几何入门题目推荐
- POJ 计算几何入门题目推荐
- 学习linux碎片(2)
- 引擎设计跟踪(九.14.2d) [翻译] shader的跨平台方案之2014
- ViewPage第二课为ViewPage添加标题
- 博客图库
- iOS开发 UI 正向传值 反向传值,Block传值
- 计算几何入门3--poj1113Wall
- WebGoat实验之Cross-Site Scripting(XSS,跨站脚本攻击)- 2016.01.09
- SpringMVC框架中多数据源的配置问题、datasource
- Objective-C 8 NSNumber的常用方法
- Java面试题全集(B)
- PHP数组相加和merge的区别
- Android源代码仓库及其管理工具Repo分析
- spring事物属性与隔离级别
- ios开发一些基础书籍