计算几何
HT008_123
家人们点点关注叭
展开
-
平面凸包--Jarvis
问题描述:覆盖平面上N个点的最小凸多边形 形象来讲就是平面上有n个柱子,把一根封闭的弹性绳套上这些柱子,绳子绷紧以后形成的多边形就是我们要求的凸包.算法实现:1.斜率逼近法,不好写而且很慢,不予介绍。 2.jarvis算法 3.Graham算法 第三个是基于对第二个的优化。 本文主要介绍Jarvis算法,Graham算法下篇文章再议。求平面凸包的数学构造法:找一条直线原创 2018-01-31 10:37:46 · 333 阅读 · 0 评论 -
计算几何工具算法-判断点与一个多边形的位置关系
题目描述给出一个n边形的n个顶点坐标 然后给出一个点的坐标,判断这个点与多边形的位置关系题目分析:对于在边上的情况很好搞,直接遍历n条边,然后依次用叉积判断即可 对于此点在多边形内部还是外部的问题 可以利用一个性质 从点P画一条足够长的射线 我们会发现 如点P在多边形内部 这条射线与多边形的交点个数为奇数 反之,如果点P在多边形外部,那么这条射线与多边形的交点个数为偶数(包括原创 2018-01-30 15:55:25 · 791 阅读 · 2 评论 -
计算几何工具算法-判断点是否在三角形内
题目描述:给出一个三角形三个点的坐标 以及一个点的坐标 判断这个点是否在三角形内 包括三角形边缘题目分析:最直接的想法是 先求出三角形的面积 S 然后用给出的点和三角形两个顶点作为一个三角形 求出三个面积 s1 s2 s3 然后判断 s==s1+s2+s3 然而这样搞精度误差实在是太大(也可能是我算面积的姿势不太对 看了下书上的方法,是用矢量的叉积来做的 很明显 D原创 2018-01-30 10:28:45 · 484 阅读 · 0 评论 -
[POJ 2398]Toy Storage
题目描述:跟上一题差不多,只是隔板是乱序的,最后输出的是装有 i 个玩具区域的个数题目链接:传送门AC Code:#include #include #include #include using namespace std;struct Point{ double x,y;};struct line{ Point up,down;};in原创 2018-01-30 09:33:00 · 223 阅读 · 0 评论 -
[POJ 2318] Toys (向量叉积的基本运用)
题目大意:有一个抽屉,里面有n个隔板,把这个抽屉分成了n+1个区域,编号分别为 0 - n 给出这个抽屉左上角和右下角的坐标,然后给出每一个隔壁上端和下端的横坐标。 给出m个物品的坐标,判断这m个物品属于哪个区域。 最后输出这n+1个区域内物品的个数题目分析:我们需要判断物品是在隔板的左边还是右边,用矢量叉积即可判断。 如果在 i 区域的左方 那么势必也在 i+1…n区域的左方原创 2018-01-29 21:33:23 · 230 阅读 · 0 评论 -
矢量及其运算
1.矢量的定义矢量是指有方向的线段,也称作向量,即两个端点P1与P2是有着先后顺序关系的,即P1P2→" role="presentation">P1P2−→−−P1P2→\overrightarrow{P_1P_2} 设a=P1P2→" role="presentation">a=P1P2−→−−a=P1P2→a=\overrightarrow{P_1P_2},原创 2018-01-29 20:45:48 · 7738 阅读 · 0 评论 -
[POJ 1927] Area in Triangle
题目大意:给你一个三角形和一个绳子的长度,问你该绳子在三角形内所围成的图形最大面积是多少。题目分析:分三种情况讨论1.三角形周长没有这根绳子长那么答案即为三角形的面积2.绳子没有三角形内切圆的周长长那么答案即为该绳子所围成的圆的面积3.介于上述两者之间此时,围成的最大面积为 如何算呢? 那么面积即为大三角形面积-小三角形面积+小三角形内切圆面积原创 2018-01-29 10:42:57 · 293 阅读 · 0 评论 -
[ZOJ 1608] Two Circles and a Rectangle(计算几何初步)
题目描述给你一个矩形和两个圆的半径,问这个矩形是否可以容纳下这两个圆。题目分析:计算几何初步 画一下图就可以得到答案 此时的a b为恰巧容纳下 r1 r2的临界态. 此时 (r1+r2)2==(a−r1−r2)2+(b−r1−r2)2" role="presentation">(r1+r2)2==(a−r1−r2)原创 2018-01-29 09:32:18 · 209 阅读 · 0 评论 -
[AHOI2012] 信号塔
题目描述:给出n个点,然后求最小覆盖掉它们的圆的坐标及半径题目分析:裸的最小圆覆盖问题,当练手题目了,但为啥在凸包的分类里(差评) 使用随机增量法,期望 O(n)题目链接:Luogu 2533 BZOJ 2823代码实现:#include #include #include #include #include const int maxm=1e原创 2018-01-31 16:51:24 · 394 阅读 · 0 评论 -
[ZOJ 1450] Minimal Circle(最小圆覆盖问题)
题目描述:给出一组点的坐标,求出能够覆盖掉他们的最小圆的坐标及半径.算法分析:解决这个问题有一种算法,随机化增量算法,在随机数据下可以O(N)的解决这个问题.具体实现方法:1.先将所有的点随机化处理2.按顺序把点一个一个的加入(一步一步的求前i个点的最小覆盖圆),每加入一个点就进入步骤33.判断当前点是否在当前的最下覆盖圆内,如果不在进入4,在进入2原创 2018-01-29 16:46:37 · 613 阅读 · 0 评论 -
[COGS 896] 圈奶牛
题目描述:给你n个点的坐标,问最少用多少花费可以把他们围起来。 传送门题目分析:没啥好分析的,就是个裸的凸包。代码实现:#include #include #include #include const int maxm=10005;const double eps=1e-10;struct Point{ double x,y; Point o原创 2018-01-31 16:12:00 · 261 阅读 · 0 评论 -
平面凸包--Graham
题目描述:覆盖平面上N个点的最小凸多边形 形象来讲就是平面上有n个柱子,把一根封闭的弹性绳套上这些柱子,绳子绷紧以后形成的多边形就是我们要求的凸包.算法实现:上一篇文章介绍了Jarvis算法 复杂度为 O(n*h) 但如果Jarvis的时间效率不够高,我们可以选择另一种更高效的算法–Graham算法. Gramham算法其实是基于对Jarvis算法的一个优化,让我们可以更高效的原创 2018-01-31 15:12:52 · 221 阅读 · 0 评论 -
[POJ 2187/Luogu 1452]Beauty Contest
题目描述:给你n个点,求任意两两之间点的最大距离的平方。题目分析:NN2" role="presentation">N2N2N^2的暴力不可过。 最大的距离肯定是在凸包上的点上取到,于是先求凸包,然后N2" role="presentation">N2N2N^2枚举凸包上的点,凸包上的点不会太多,所以可过。代码实现Jarvis(Luogu 34ms POJ 400+m原创 2018-01-31 10:45:55 · 214 阅读 · 0 评论 -
计算几何工具算法-求任意多边形的面积
题目描述:给出n边形的n个顶点坐标,求这个n边形的面积题目分析:如果在数学上,大概会把这个多边形分成三角形(n-2)个三角形来求 但是这样免不了繁琐的算法,编程复杂度和时间复杂度都很差。 根据矢量叉乘的几何意义 矢量A与矢量B的矢量积是一个矢量,其模等于由A和B作成的平行四边形的面积,下面给出一个公式。 s=(∑i=1nOPi→∗OP原创 2018-01-30 17:08:42 · 786 阅读 · 0 评论 -
[JLOI2013] 赛车
题目描述:雾。题目分析:刚开始YY了个李超的做法,然而没有时间域始终RE。 正解是个半平面交+单调栈 且强制在第一象限 代码很短(雾题目链接:Luogu 3256 BZOJ 3190Ac 代码:#include <iostream>#include <cstdio>#include <cmath>#incl...原创 2018-03-31 08:35:37 · 250 阅读 · 0 评论