传送门

二维凸包的板子,抄yyb大佬的

//minamoto
#include<bits/stdc++.h>
#define rint register int
#define inf 0x3f3f3f3f
using namespace std;
const int N=10005;
struct node{double x,y;}p[N],st[N];
int n,k,top;double ans;
inline bool cmp(node a,node b){double A=atan2((a.y-p[1].y),(a.x-p[1].x));double B=atan2((b.y-p[1].y),(b.x-p[1].x));return A!=B?A<B:a.x<b.x;
}
inline double cross(node a,node b,node c){return (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x);}
inline double dis(node a,node b){return sqrt((b.y-a.y)*(b.y-a.y)+(b.x-a.x)*(b.x-a.x));}
int main(){
//  freopen("testdata.in","r",stdin);scanf("%d",&n),p[0]={inf,inf};for(rint i=1;i<=n;++i){scanf("%lf%lf",&p[i].x,&p[i].y);if(p[0].y>p[i].y||(p[0].y==p[i].y&&p[i].x<p[0].x))p[0]=p[i],k=i;}swap(p[k],p[1]),sort(p+2,p+n+1,cmp);st[0]=p[1],st[1]=p[2],top=1;for(rint i=3;i<=n;++i){while(top&&cross(st[top-1],p[i],st[top])>=0)--top;st[++top]=p[i];}st[top+1]=p[1];for(rint i=0;i<=top;++i)ans+=dis(st[i],st[i+1]);printf("%.2lf\n",ans);return 0;
}

转载于:https://www.cnblogs.com/bztMinamoto/p/9989228.html

P2742 【模板】二维凸包 / [USACO5.1]圈奶牛Fencing the Cows相关推荐

  1. luogu P2742 【模板】二维凸包 / [USACO5.1]圈奶牛Fencing the Cows

    题解: 二维凸包裸题 按照x坐标为第一关键字,y坐标为第二关键字排序 然后相邻判断叉积用单调队列搞过去 正反都做一次就好了 代码: #include <bits/stdc++.h> usi ...

  2. [洛谷P2742]【模板】二维凸包([USACO5.1]圈奶牛Fencing the Cows)

    题目大意:求一个点集凸包边长 题解:求凸包,直接求 卡点:发现在较后面数位上有较小的误差,还以为是浮点数误差,最后发现是构造函数写成了$int$类型 C++ Code: #include <al ...

  3. P2742 [USACO5.1]圈奶牛Fencing the Cows /【模板】二维凸包

    P2742 [USACO5.1]圈奶牛Fencing the Cows /[模板]二维凸包 题目: 给定一些点,问围住所有点所用的围栏的长度 题解: 凸包模板题 凸包详细 代码: #include&l ...

  4. P2742-二维凸包/圈奶牛Fencing the Cows【凸包】

    正题 题目链接:https://www.luogu.org/recordnew/lists?uid=SSL_WYC_zombieeeeee&pid=P2742&status=& ...

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

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

  6. POJ 3348 Cows(二维凸包)

    题目链接:https://cn.vjudge.net/problem/POJ-3348 题意:有一些数,坐标已知,要用这些树作为篱笆的顶点圈一块多边形的地养牛,每头牛占地大小50,问最多能养多少头牛. ...

  7. POJ4449(三维凸包+空间坐标旋转+二维凸包)

    题目:Building Design 题意: 题目就是给了一个凸多面题. 要把这个凸多面体放到地上,一个面要接触到地面. 求一种放法,使得最高点最高,最高点相同时使投影面积最小.输出最高点高度H和投影 ...

  8. 金蝶K3Cloud 5.0 套打设计模板 二维码

    金蝶K3Cloud 5.0 套打设计模板 二维码 找了很久没找到,做个记录 条形码-属性-设置-编码: 另外K3这里的控件不能旋转,唉

  9. 微信小程序参数二维码生成朋友圈分享图片

    前言 小程序目前无法分享到微信朋友圈,可朋友圈是一个非常重要的传播途径,所以得想办法把这个资源利用起来 微信小程序支持通过扫描/长按识别二维码或小程序码图片的方式进入一个小程序首页或小程序中某个特定页 ...

最新文章

  1. self.opener 和 self.parent
  2. python找最大值的函数_Python 获取最大值函数
  3. HttpModule与HttpHandler详解(转)
  4. java html 生成 pdf_Java实现HTML代码生成PDF文档
  5. vue生成包报错error from UglifyJs
  6. RedLock 实现分布式锁
  7. 广西计算机学业水平考试,2017年6月广西信息技术学业水平考试(1)-2017广西信息技术会考真题...
  8. 读c语言深度剖析 -- 单引号与双引号、逻辑运算符、位运算符、花括号
  9. 【Pytorch神经网络基础理论篇】 06 自动求导+导数与微分
  10. 优秀的SharePoint 2013开发工具有哪些(一)
  11. 热门话题“30岁还没结婚你会考虑将就么?”数据告诉你,网友们都如何做出抉择...
  12. JAVA常用API或编程工具002---SpringSource Tool Suite:基于Eclipse的Spring应用开发环境
  13. python dll load failed_python安装MySQLdb的问题 ImportError: DLL load failed
  14. 如何用C++从文件读取学生成绩再求出平均成绩送回文件中
  15. USB转串口RS232驱动程序
  16. JDK历史所有版本下载地址(附Oracle帐号)
  17. 一个简短的指南的iOS越狱及原因
  18. Cortex-M可以跑Linux操作系统吗?
  19. python实现华氏温度和摄氏温度转换
  20. 服务器系统事件6013,来源为EventLog 事件 ID:6013类型为信息的系统启动时间为XXXX秒的事件解析...

热门文章

  1. 文件操作和IO --- 文件操作
  2. 用Latex排版论文(2)《自动化学报》Latex模版使用时需要注意的问题
  3. flutter项目模板
  4. BP神经网络解决什么问题
  5. 在线html网页编辑器ckeditor的使用与配置
  6. 医疗影像MRI相关软件
  7. 2016年2月西部数码.wang域名注册量及份额报告
  8. XR,VR,AR虚拟服务器,虚拟演播室
  9. EMC 电磁兼容测试标准
  10. 晶体管与场效应管的区别