计算几何
文章平均质量分 53
wwyx2001
OIer----这条路,仅一人独行
展开
-
计算几何 学习笔记
向量、直线与多边形精度控制控制精度一般在10−7~10−10之间const double eps=1e-7;int dcmp(double x){ if (fabs(x)return 0; else return (x>0)?1:-1;}123456123456计算π的值反余弦函数const double pi=acos(-1.0);1转载 2017-03-15 09:39:52 · 582 阅读 · 0 评论 -
[POJ2954]Triangle(计算几何-Pick定理)
题目:我是超链接题意:给出一个顶点都是整点的三角形,求三角形内部的整点的个数。题解:一个计算点阵中顶点在格点上的多边形面积公式:S=a+b/2-1,其中a表示多边形内部的点数,b表示多边形边界上的点数,s表示多边形的面积。 这题让我求a啊,2a=2S+2−b2a=2S+2-b 这个S用叉积求 b的话,我们需要知道:端点是整点的线段内部如果有整点, 那线段一定是被原创 2018-01-18 14:58:06 · 322 阅读 · 0 评论 -
[POJ1113]Wall(计算几何-凸包)
题目:我是超链接题意:给出一个多边形,要在外围距离r围一圈围墙,求围墙的最小长度题解:这个多边形肯定是个凸包啊,但是这个外围距离?!看个图冷静一下,图引自这位up 所以所求长度如图所示为凸包周长加以l为半径的圆的周长。因为绕周长一周所以为一个正圆这里给出凸包求法: 凸包为把给定点包在内部,面积最小的凸多边形 常用Graham扫描法将点按x坐标第一关键字原创 2018-01-18 19:32:04 · 296 阅读 · 0 评论 -
[POJ1228]Grandpa's Estate(计算几何-凸包)
题目:我是超链接题意:给定一些凸包上的点,问能否确定唯一凸包题解:如何确定呢?三点确定一条直线,我们只要知道凸包上每一条边都有至少三个点就好了,而且顶点至少是三个啊 那我们先求个凸包,然后判断是否每条边都是三个点,注意每个点不一定只在一条线上(端点)代码:#include #include #include using namespace std;co原创 2018-01-18 20:39:36 · 269 阅读 · 0 评论 -
[POJ1873]The Fortified Forest(dfs+计算几何-凸包)
题目:我是超链接题意:给出一些树(坐标,价值,长度),要求砍下一些树做成篱笆,将剩下的树围起来。求砍下的树最小价值的方案,如果有多种方案,输出砍的树的个数最少的。题解:嘛国王最多只有15棵树啊,dfs砍不砍的话2^15也不多,那就暴力一波,1A满意代码:#include #include #include #include using namespace原创 2018-01-18 21:35:17 · 232 阅读 · 0 评论 -
[POJ2187]Beauty Contest(计算几何-旋转卡壳-最远点对)
题目:我是超链接题解:值得一提的是,这是一个“不定向”算法,为什么呢,因为ta的名字不定哈哈哈,旋转卡壳一共有2*3*2*2=24种不同的读音哦旋转卡壳可以解决:凸多边形最远点对,凸多边形间最远/近点对,最小矩阵覆盖问题被凸包上被一对平行直线卡住的点对叫对踵点 答案一定出在一对对踵点上 尝试用通过旋转一对平行直线,枚举所有对踵点 按逆时针顺序枚举凸包上一条边,则凸包上原创 2018-01-19 08:28:31 · 411 阅读 · 0 评论 -
[POJ2079]Triangle(计算几何-旋转卡壳-最远点对)
题目:我是超链接题意:给出一些点,求顶点在这些点上的面积最大的三角形题解:枚举一个点,在上次的基础上找另两个点,这样发现另两个点似乎也是单调的,没什么特别的,暴力去找就行了代码:#include #include using namespace std;const double INF=1e18;const double eps=1e-9;int原创 2018-01-19 14:37:55 · 258 阅读 · 0 评论 -
[BZOJ1069][SCOI2007]最大土地面积(计算几何-旋转卡壳-最远点对)
题目:我是超链接题解:有了上个题的基础我们就知道怎么做了吧,这里有四个点,看看数据范围,我们枚举对角线就可以了,求两侧最大三角形 O(n2)O(n^2)此题卡常。代码:#include #include #include using namespace std;const double INF=1e18;const double eps=1e-9;int dc原创 2018-01-19 15:33:44 · 314 阅读 · 0 评论 -
[BZOJ1185][HNOI2007]最小矩形覆盖(计算几何-旋转卡壳)
题目:我是超链接题解:这就是旋转卡壳的第二种应用了,最小矩形覆盖! 思路:矩形一定有一条边在凸包上,枚举这条边,旋转卡壳来维护其他三个点,对面的顶点用三角形面积大小判断,而两边的点则用点积来判断就好了,还有就是注意C++输出-0.00000的情况 真是不敢想象非ACM赛制的旋转卡壳怎么1A。。。这精度掉的。。。1e-9 -> 1e-8 -> 1e-7 -> 1e原创 2018-01-19 21:06:43 · 553 阅读 · 0 评论 -
[POJ3608]Bridge Across Islands(计算几何-旋转卡壳-凸多边形间最小距离)
题目:我是超链接题解:这是旋转卡壳的第三种应用啦——凸多边形间最小距离 显然两个凸多边形的最远点对在凸包上,而且这种东西的前提是要判断两个凸包不能相交,不然最小距离肯定是0嘛,还要进行一堆特判。 具体做法其实就是用两条平行线去卡两个凸包,我们枚举一个多边形的边,然后从另一个多边形中找合适的对应点 在P上找出最下方的点记作C,在Q上找最上方的点记作D,记C在逆时针方向的下一原创 2018-01-20 11:21:11 · 742 阅读 · 1 评论 -
[POJ3130]How I Mathematician Wonder What You Are!(半平面交)
题目:我是超链接题意:给出一个多边形,判断多边形是否有核题解:所谓多边形的核,简单来说就是有个人站在这个点,那么这个多边形内的每一个点这个人都能看见(光沿直线传播) 也就是说对于多边形的每一条边的一个半平面求交,可以交出来一个凸壳,这个点集中的点都满足要求 附图 这就是一道半平面交裸题了 诶等等我好像还不会半平面交给出若干个半平面,求它们的交原创 2018-01-20 16:57:31 · 229 阅读 · 0 评论 -
[POJ1279]Art Gallery(半平面交)
题目:我是超链接题意:顺时针给一个多边形,求合格核点的面积(半平面交面积)题解:半平面交面积啦,这里采用一种O(nlogn)O(nlogn)的半平面交吧 一点知识储备 极角:从x正半轴旋转到向量v所需要的角(弧度) 按照极角排序的方法:ang=atan2(v.y,v.x)ang=atan2(v.y,v.x)(v即方向向量,ta的左边就是对应的半平面)下面代原创 2018-01-20 23:03:25 · 355 阅读 · 0 评论 -
【充满原题的胡策】训练2.26 T2(三维计算几何)
题目: 题解:这道题目基本分为4个步骤: 旋转地平面(100pts) 投影 求凸包 求面积 这个投影的过程其实不错,我只写了30pts的代码:#include <cstdio>#include <algorithm>using namespace std;const double INF=1e18;const double...原创 2018-02-26 15:42:00 · 247 阅读 · 0 评论 -
【翔哥的胡策】互测3.10(斜率优化dp+计算几何||manacher)
T1:[CEOI2004]锯木厂选址题解:首先几个数组all[i]表示前i的权值和 dis[i]表示从1到i的距离 c[i]表示从1运到i树的花费,那么c[i]=c[i−1]+all[i−1]∗s[i−1]c[i]=c[i−1]+all[i−1]∗s[i−1]c[i]=c[i-1]+all[i-1]*s[i-1]w[i][j]表示从i树运到j树,j为厂的花费,那么w[i...原创 2018-03-10 19:34:47 · 337 阅读 · 0 评论 -
[POJ3301]Texas Trip(三分-最小正方形覆盖)
题目:我是超链接题解:设正方形的边都与坐标轴平行可以求出来一个正方形 如果这个正方形旋转一个角度的话正方形的大小可能会改变 经过我多年文化课做几何旋转题目,可以发现正方形的面积关于旋转角度的函数单峰如果面积随角度变化是单峰的函数,那么自然就可以想到是三分,按照题目要求求正方形最小的面积,如果正方形是平行于x轴的,那么正方形面积是x的最大距离*y的最大的距离。然后旋转正方...原创 2018-04-18 22:00:31 · 417 阅读 · 0 评论 -
【loli的胡策】测试4.20(主席树+凸包)
T1:n个数,m个询问,强制在线,每次给出l,r,求区间mex值 a[i]<=1e9,n,m<=200000题解:我为什么这么ZZ 这样的思路以前应该见过啊。 离线的做法? 首先处理出1~i的mex值用线段树维护,同时处理出nxt[i]表示这个数字的下一个位置 当我们把左节点右移的时候,会对i~nxt[i]这个区间造成的影响是:mex比这个数字大的全都要变成这...原创 2018-04-20 16:25:48 · 231 阅读 · 0 评论 -
[POJ1265]Area(计算几何-Pick定理)
题目:我是超链接题意:给出一个顶点都在整点的多边形,求在多边形内部有多少个整点,在多边形边界上有多少个整点,多边形的面积。题解:一道很综合的题 面积用三角形剖分 边点还是上次的方法 内部的点用Pick定理,一个计算点阵中顶点在格点上的多边形面积公式:S=a+b/2-1,其中a表示多边形内部的点数,b表示多边形边界上的点数,s表示多边形的面积。代码:#i原创 2018-01-18 15:47:36 · 267 阅读 · 0 评论 -
[POJ1654]Area(计算几何-多边形的面积)
题目:我是超链接题意:1左下 2下 3右下 4左 5回到原点 6右 7左上 8上 9右上 起点在原点,按照操作进行,走出来一个多边形,求多边形的面积。题解:这个就是裸题呀,然后我写了一发。。GG没看空间限制M了 求面积for (int i=2;iarea+=cj(dian[i]-dian[1],dian[i%n+1]-dian[1]);area/=2; area=原创 2018-01-18 08:28:05 · 419 阅读 · 0 评论 -
[POJ1584]A Round Peg in a Ground Hole(计算几何-凸多边形)
题目:我是超链接题意:给出一个半径R、一个点O、顺时针或者逆时针给出一个多边形 首先判断多边形是否为凸多边形,如果不是输出HOLE IS ILL-FORMED 然后再判断以O为圆心以R为半径的圆是否完全在多边形里,是则输出PEG WILL FIT,否则输出PEG WILL NOT FIT题解:这个判断是否为凸多边形的话,考虑ta们的特点:任取一条边, 整个图形都原创 2018-01-17 20:13:04 · 224 阅读 · 0 评论 -
[bzoj1007][HNOI2008]水平可见直线(单调栈+几何)
国庆七天学Day1原创 2017-10-01 10:44:35 · 258 阅读 · 0 评论 -
[BZOJ1492][NOI2007]货币兑换Cash(斜率优化dp+splay|cdq分治维护凸包)
题目:我是超链接题解:f[i]表示第i天最多能获得多少钱,那么f[0]=s 题目中有提示说要不全部买入要不全部卖出,其实比较好理解,因为能赚钱一定要尽量赚 首先考虑一个问题,如果某天赚到的钱知道了,能换成A券的数量a和能换成B券的数量b就确定了 a/b=rate[i] a*A[i]+b*B[i]=f[i](A[i],B[i]表示第i天两种金券的价值) 那就考虑已知f[1.原创 2018-01-11 18:53:01 · 367 阅读 · 0 评论 -
[POJ3525]Most Distant Point from the Sea(二分+半平面交)
题目:我是超链接题意:给出一个多边形,求里面一个点,其距离离多边形的边界最远,输出距离。题解:二分答案,相当于是把所有直线往里平移mid长,看看这个半平面能不能有交点 这个平移嘛。。可以找到一个垂直的方向(rotate),然后按照长度往里平移就好了代码:#include #include #include #include using namespac原创 2018-01-21 15:12:46 · 221 阅读 · 0 评论 -
[POJ3384]Feng Shui(半平面交+凸包)
题目:我是超链接题意:在一个凸多边形中放两个半径固定的圆,要求输出使覆盖面积最大的(可重叠)两个圆圆心题解:Emmm。。。套路缩小凸多边形,形成的凸包是圆心可以在的位置,然后暴力找最远点! 不知道为什么nlogn的半平面交过不了(说不定是spj的锅)代码:#include#include#include#include#includeusing name原创 2018-01-22 16:07:52 · 344 阅读 · 0 评论 -
[BZOJ2732][HNOI2012]射箭(二分+半平面交)
题目:我是超链接题解:这个关卡包含前面的特性很明显是二分 判断的话随便画画柿子就有y1=ax2+bx=y2y1,而x,y1,y2x,y1,y2都是已知的,这不就是一个关于a,b的直线了吗,半平面交? 这个数据范围也只有nlogn的半平面交能过了吧,总复杂度O(nlog2n)O(nlog^2n) 选择直线上的点的时候,注意不能选择与坐标轴的交点,因为这样过原点的直线并没有办法表示,原创 2018-01-23 08:02:56 · 265 阅读 · 0 评论 -
[BZOJ1038][ZJOI2008]瞭望塔(半平面交)
题目:我是超链接题解:很显然,只有瞭望塔和每个山顶形成直线的斜率的绝对值大于对应山坡的斜率,这个山坡才能看见。不难想到对所有的山坡求一个半平面交然后找到有山顶存在的部分,这个nO(n2)O(n^2)求个半平面交吧 一开始还以为瞭望塔只能建在山顶上,突然发现还可以建在山坡上,那么这个最优的点不在【山顶对应的凸包上】就在【凸包的顶点对应的山坡上】 1A代码:#inc原创 2018-01-23 15:13:52 · 392 阅读 · 0 评论 -
[POJ2318]TOYS(计算几何-叉积+二分)
题目:我是超链接题意:一些直线把一个矩形分割成了若干个部分。给出一些点问每一个部分里有多少个点题解:主要是这几天被cdq分治的凸包虐惨了,所以要好好学习凸包啊 借此机会我就好好认识一下计算几何吧!叉积的性质:a×b,如果b在a的左边,叉积为正,右边为负,ab共线即为0 可以二分出所在部分的右边界,是否在某一条直线的右边可以用叉积判断一下代码:#原创 2018-01-16 14:03:52 · 298 阅读 · 0 评论 -
[POJ3304]Segments(计算几何-叉积)
题目:我是超链接题意:给出一些线段,问是否存在一条直线,使所有线段在直线上的射影至少有一个公共点。题解:如果所有线段在直线上的射影至少有一个公共点的话,那么过这个点做这条直线的垂线,垂线一定与所有线段都相交 问题可以转化为判断是否存在一条直线与所有线段都相交 这个点的数量很少啊,而且怎么想都是跟端点有关吧,那就。。枚举端点看看这条直线是不是过所有直线? 用到了直原创 2018-01-16 19:15:06 · 290 阅读 · 0 评论 -
[POJ1269]Intersecting Lines(计算几何-叉积)
题目:我是超链接题意:每次给出两条直线,判断是否平行、重合、相交,相交的话就输出交点。题解:判断两条直线是否平行 两条直线两个方向向量平行(叉积为0)判断两条直线是否重合 在平行的基础上,在两条直线上各选一个点组成一个方向向量在去与前两个中的任意一个判平行(叉积为0)那相交的话就是既不平行也不重合呗 求交点的话其实是这样的 a⃗ =A⃗ +tB⃗ \原创 2018-01-16 15:33:28 · 373 阅读 · 0 评论 -
[POJ2653]Pick-up sticks(计算几何-叉积)
题目:我是超链接题解:两条线段的交点,那就像直线和线段的交点那样吧,假设线段A,B,所含四个点a,b,c,d a与c的方向向量和A的方向的叉积*a与d的方向向量和A的方向的叉积应当小于0(不在同一侧) 因为是线段,我们对于d也应该判断一遍,d与a,d与b 不过这个题。。别看是多组数据+n的范围,其实O(n2)O(n^2)能过?!代码:#include #in原创 2018-01-16 20:23:57 · 327 阅读 · 0 评论 -
[POJ2826]An Easy Problem?!(计算几何-细节/距离)
题目:我是超链接题意:给出两条线段,雨水从空中竖直落下,问线段上能积多少水。题解:一道特判超~~~多的题目,下见注释咯 这道题精度会有-0.00?!加个fabs吧。这题的题解。。。真是敷衍啊 那就加个对于距离的讲解吧,虽然这个题没有用 点到直线的距离(用面积法啦)【如果a旋转到b是逆时针,则叉积为正,否则叉积为负】double DisDL(Point P,原创 2018-01-16 22:00:03 · 1294 阅读 · 1 评论 -
[HDU1115]Lifting the Stone(计算几何-三角形的[心]+角度计算+旋转)
题目:我是超链接题意:找到多边形的重心题解:三角形的重心我会求!就是顶点坐标的算术平均数。 一堆有质量的点的重心我会求!就是坐标加质量为权的平均数。 所以多边形重心我会求。 嘛这是重心(三条中线的交点) 对于其他的[心],我们先进行知识储备!求ππconst double pi=acos(-1.0);求夹角(这里都是弧度制啦)double angl原创 2018-01-17 18:36:01 · 482 阅读 · 0 评论 -
[HDU1756]Cupid's Arrow(计算几何-点在多边形内部)
题目:我是超链接题解:HDU的中文题?! 一看这个题不就是点在多边形内的裸题吗,为什么要发呢? 因为这个题目的图形不一定是凸多边形啊! 有什么关系呢?就是我们判断的时候不能只判断P点到AB的距离是不是0了,即不能仅仅判断是否共线,而是需要进一步用点积判断,就是下面这个图啦 那正确的判断姿势应该是。。bool is_online(po p,po a,po b){原创 2018-01-17 21:24:39 · 292 阅读 · 0 评论 -
[BZOJ1502][NOI2005]月下柠檬树(辛普森积分+解析几何)
题目:我是超链接题解:首先我们理解一下投影的性质,也就是投影出来的图形一定跟原图形全等。那么我们所要求的就是一些圆形和一些等腰梯形面积并圆形投影下来是什么呢?和原来一样的圆形啊那么运用计算几何的知识就可以得到圆的方程和圆的公切线的方程,然后得到一个连续的函数(这样用辛普森积分的时候就不必考虑将整个图形拆成若干个一坨一坨的图形再求积分)。最后这个题就成为一个函数的解析式,这个...原创 2018-06-27 17:19:21 · 383 阅读 · 1 评论