题解:

今天开始学习计算几何。
这是一道计算几何求凸包周长的模板题,采用Andrew算法。
第二道题改下输出即可。
最后凸包周长的求法注意第一个点和最后一个点是同一个。

代码

100ms 3MB

#include<cstdio>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;const int maxn = 100000 + 10;
int n;
struct Point {double x, y;Point(double x=0, double y=0):x(x),y(y) {}
}p[maxn], ch[maxn];typedef Point Vector;Vector operator + (Vector A, Vector B) { return Vector(A.x+B.x, A.y+B.y); }
Vector operator - (Vector A, Vector B) { return Vector(A.x-B.x, A.y-B.y); }
Vector operator * (Vector A, double p) { return Vector(A.x*p, A.y*p); }
Vector operator / (Vector A, double p) { return Vector(A.x/p, A.y/p); }bool operator < (const Vector& a, const Vector& b) {return a.x < b.x || (a.x == b.x && a.y < b.y);
}const double eps = 1e-10;
int dcmp(double x) {if(fabs(x) < eps) return 0; else return x < 0 ? -1 : 1;
}bool operator == (const Vector& a, const Vector& b) {return dcmp(a.x-b.x) == 0 && dcmp(a.y-b.y) == 0;
}double Dot(Vector A, Vector B) { return A.x*B.x + A.y*B.y; }
double Length(Vector A) { return sqrt(Dot(A, A)); }
double Angle(Vector A, Vector B) { return acos(Dot(A, B) / Length(A) / Length(B)); }
double Cross(Vector A, Vector B) { return A.x*B.y - A.y*B.x; }
double Area2(Point A, Point B, Point C) { return Cross(B-A, C-A); }int ConvexHull() {sort(p, p+n);int m = 0;for(int i = 0; i < n; i++) {while(m > 1 && Cross(ch[m-1]-ch[m-2], p[i]-ch[m-2]) <= 0) m--;ch[m++] = p[i];}int k = m;for(int i = n-2; i >= 0; i--) {while(m > k && Cross(ch[m-1]-ch[m-2], p[i]-ch[m-2]) <= 0) m--;ch[m++] = p[i];}if(n > 1) m--;return m;
}int main() {scanf("%d", &n);for(int i = 0; i < n; i++) scanf("%lf%lf", &p[i].x, &p[i].y);int c = ConvexHull();double ans = 0;for(int i = 0; i < c; i++) ans += Length(ch[i]-ch[i+1]);printf("%.1lf\n", ans);return 0;
}

[codevs 1298] 凸包周长 [codevs 3201] 奶牛代理商 XI相关推荐

  1. codevs 2703 奶牛代理商 XII

    codevs 2703 奶牛代理商 XII 题目描述 Description 小徐从美国回来后,成为了USACO中国区的奶牛销售代理商,专门出售质优价廉的"FJ"牌奶牛.上题中,小 ...

  2. 2703 奶牛代理商 XII

    2703 奶牛代理商 XII  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold 题解 题目描述 Description 小徐从美国回来后,成为了USACO中国区的奶 ...

  3. [WIKIOI1298]凸包周长[裸凸包]

    http://www.wikioi.com/problem/1298/ 这是题目. 是一道裸的凸包算法题,但是我一开始还是写WA了.先贴代码 1 #include <cstdio> 2 # ...

  4. 50.分治算法练习:  二分算法:  2703 奶牛代理商 XII

    时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 小徐从美国回来后,成为了USACO中国区的奶牛销售代理商,专门出售 ...

  5. HDU 1348 Wall ( 凸包周长 )

    链接:传送门 题意:给出二维坐标轴上 n 个点,这 n 个点构成了一个城堡,国王想建一堵墙,城墙与城堡之间的距离总不小于一个数 L ,求城墙的最小长度,答案四舍五入 思路:城墙与城堡直线长度是相等的, ...

  6. POJ - Wall(凸包周长)

    题目链接:http://poj.org/problem?id=1113 Time Limit: 1000MS Memory Limit: 10000K Description Once upon a ...

  7. poj 1873 The Fortified Forest (位运算枚举 + 凸包周长)

    题目链接:http://poj.org/problem?id=1873 大意:有一片N棵树的森林,要从中砍掉几棵树做成篱笆,把剩下的树围起来 输入:给N课树,每棵树的坐标是x,y,每棵树有一个vi和l ...

  8. The Fortified Forest UVALive - 5211 [二进制枚举+凸包周长]

    The Fortified Forest UVALive - 5211 题意:n棵树,每棵树对应有x,y,v,l分别代表横坐标,纵坐标,价值,砍这棵树能构成的篱笆长度.现在要求输出,在最小被砍价值的情 ...

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

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

最新文章

  1. ajax content download,关于ajax的content-download时间过慢问题的解决方案与思考
  2. 为DropDownList 添加optgroup分组以及为ListItem 加式样
  3. JESD204B与LVDS接口并行 管线式ADC延迟问题分析及解答
  4. springboot下Static变量通过@Value和set方法注入失败的问题和解决办法
  5. C语言—静态存储与动态存储
  6. ds1302模块 树莓派_(16)给树莓派B+ 安装一个实时时钟芯片DS1302
  7. 我来更新了,说说工作中的Java处理异常
  8. python 画布 保存_Python Tkinter使用PIL将画布保存为图像
  9. 夏利车电动窗功能设定
  10. C++ 大神John Carmack的编程传说!还在抱怨C++难学吗?看大佬操作!
  11. 九章算术卷第七 盈不足
  12. 转载:互联网盈利模式
  13. Flash Player离线安装包下载
  14. 机器学习实战 基于_资料 |《机器学习实战:基于 Scikit-Learn、Keras 和 TensorFlow(第二版)》...
  15. WebGL中实现三维融合视频投影技术
  16. SAP ABAP Loop…Assigning与Loop…Into的比较
  17. jmeter性能测试2-模拟多用户登录
  18. matlab调整文字方向,python 旋转文字方向_如何通过Python 在绘图中旋转文字?
  19. 【力扣动态规划基础专题】:509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯 62. 不同路径 63. 不同路径 II 343. 整数拆分 96. 不同的二叉搜索树
  20. 手把手教你做自然语言理解智能对话的微信小程序【核心源码】

热门文章

  1. ustc小道消息20211229
  2. 第15课:卷积神经网络(CNN)
  3. 第16课:项目实战——利用 PyTorch 构建 CNN 模型
  4. 行政区村界线_工作动态 | 龟山镇召开村级行政区域界线勘定工作暨民政业务培训会议...
  5. VTK修炼之道2_VTK体系结构1
  6. C++Primer:函数(参数传递-非引用形参)
  7. 应用程序通用开发框架
  8. jsp 中forward 和 Redirect 的用法区别
  9. python eval()函数用法以及可能出现的问题
  10. 取得 Git 仓库 —— Git 学习笔记 04