P2742 二维凸包
来源:互联网 发布:淘宝异常订单销量删除 编辑:程序博客网 时间:2024/04/29 16:45
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<cmath>using namespace std;const int maxn=10000+10;struct node{double x,y;}a[maxn];int stack[maxn],top;bool cmp(node a,node b){return a.x<b.x;}double dis(int u,int v){return sqrt((a[u].x-a[v].x)*(a[u].x-a[v].x)+(a[u].y-a[v].y)*(a[u].y-a[v].y));}bool pd(int u,int v,int w){return (a[u].y-a[v].y)*(a[v].x-a[w].x)>(a[u].x-a[v].x)*(a[v].y-a[w].y);}int main(){int n,i;cin>>n;for(i=1;i<=n;i++)scanf("%lf%lf",&a[i].x,&a[i].y);sort(a+1,a+n+1,cmp);top=2;stack[1]=1;stack[2]=2;for(i=3;i<=n;i++){while(top>1 && !pd(i,stack[top],stack[top-1]))top--;stack[++top]=i;}double ans=0;for(i=1;i<top;i++)ans+=dis(stack[i],stack[i+1]);top=2;stack[1]=1;stack[2]=2;for(i=3;i<=n;i++){while(top>1 && pd(i,stack[top],stack[top-1]))top--;stack[++top]=i;}for(i=1;i<top;i++)ans+=dis(stack[i],stack[i+1]);printf("%.2lf",ans);return 0;}
0 0
- P2742 二维凸包
- P2742 二维凸包
- zju1453(二维凸包)
- 二维凸包模版
- 二维凸包基本知识
- 二维凸包算法
- 二维凸包
- 二维凸包模板
- POJ 1113 二维凸包
- 二维凸包 Graham 算法
- USACO FC,二维凸包
- 二维凸包 Andrew算法
- 二维凸包Haskell实现
- 求二维凸包算法详解
- HDOJ 1348 基本二维凸包问题
- POJ 1113 Wall 二维凸包
- hdu-1392(二维凸包模板)
- 二维凸包模板 【Graham扫描算法】
- Oracle中默认的用户名和密码
- 我的博客
- Linux中mount和umount命令常用汇总
- HTC Vive controller手柄运动方向识别
- 导入eclipse项目倒idea
- P2742 二维凸包
- Android实现静默安装和智能安装
- 花样灯
- android studio依赖库gradle文件解析
- iOS -- TableView去掉分割线
- java page-taglib分页
- 让maven使用国内镜像和archetypeCatalog
- php简单工厂模式
- iOS UILabel、UIButton文字竖排显示