计算几何
l04205613
闲人一个
展开
-
求多边形重心(计算几何)
<br />多边形(均匀)求重心,把多边形分割成多个三角形,计算各个三角形的 面积 和 重心,因为是均匀的,所以面积比例可以代替质量比例,根据这个比例以及所有三角形的重心求出多边形的重心。<br /> <br />最裸的版本:<br />按时针顺序给出所有点,没有相交的边(也没有重合的边),也没有两点以上的点共线,直接算就好。<br /> <br />例如:POJ 1385 Lifting the Stone<br /> <br />加强一点的版本:<br />按顺序给出所有点,但不保证时针顺序,要求第 i原创 2011-05-12 10:00:00 · 1758 阅读 · 0 评论 -
ZOJ1128 Atlantis(POJ1151/HDU1542 求矩形并)
给出 N 个矩形(上下界,左右界,一般都是给出一条对角线的两个顶点坐标),求他们实际占的面积,也就是这些矩形并的面积只会一种离散的说,真心好弱,不晒代码了,基本是“抄”的,给个链接吧,很牛X的,绝对的火星人,三种方法实现,前后有过5种思路……无限 YM + ORZ ……http:原创 2011-07-19 09:56:29 · 1035 阅读 · 1 评论 -
ZOJ2347 Squares (POJ2002 二分查找)
给 N 个点,任意取其中4个,是否能构成正方形,能的话算一组,求有多少组这样的点,也就是说最多可以找出多少个正方形方法很简单,确定两个点,必然可以求出正方形的另外两个点,在点集中查找,另外两个点是否存在就可以了。用二分查找,中间加上剪枝,时间可以压到 1s 一下,但是那些 100原创 2011-07-19 19:50:47 · 1451 阅读 · 0 评论 -
ZOJ 1465 Wall (POJ 1113)(凸包)
<br />裸凸包,不解释,也没有啥要注意的,直接硬上就OK<br /> <br />不过我发现 sort 的确比 qsort 快一点,XH用一个 qsort 做点集的角排序,我用的是 sort ,时间比 XH 的短一些……<br /> <br />而且 sort 写着挺方便的说原创 2011-05-07 10:32:00 · 936 阅读 · 0 评论 -
ZOJ1248/POJ1474/HDU1469 Video Surveillance(判断多边形是否存在核,计算几何)
还是半平面交,各种模板各种套,注意点的顺序,所以就不多说了但是,这题的数据还是要提一下的,POJ 的 discuss 里面有组 80+ 行的数据,这组数据标程给出的是 possible ,但是这个多边形的核的面积是0,因为到最后,核只有一条边(也可以这样理解,一个矩形,长时大于原创 2011-07-23 10:46:42 · 1929 阅读 · 0 评论 -
ZOJ 1683 Fishnet (POJ 1408)(计算线段交点&叉积求面积)
题意:有一个长 1 的正方形框(放在x-y坐标系的0-1上),然后给出一个数 n 代表该正方形每条边上的钉子数,接下来给出这钉子的坐标(按顺序且钉子没有重合的情况),把对边上的点依次按顺序用线连接起来,得到一张不规则的网,由多个不过则四边形构成,输出这些小四边形中面积最大一块的面原创 2011-05-02 02:11:00 · 1447 阅读 · 0 评论 -
神棍节献礼之——URAL1111 Squares(几何)
题意是有 N 个正方形,每个正方形给出一条对角线的两个顶点坐标,然后判断他们到指定点的距离的大小关系,按距离从近到远,升序输出这些正方形的编号。注意,正方形的边可能不和坐标轴平行,还有如果指定点在正方形内部的话,距离认为是 0 。方法很显然的,根据对角线的两点坐标计算出剩原创 2011-10-11 19:31:37 · 1318 阅读 · 0 评论 -
POJ1279/ZOJ1369 Art Gallery,POJ2451 Uyuw's Concert(半平面交求多边形的核)
传说中的半平面交……看的是朱泽园 06 年的论文,他自创的排序增量法,n*logn 的复杂度,相当给力PS:朱泽园为了他的论文,专门在POJ上加了一道题,就是 POJ2451 Uyuw's Concert ,裸模板题,看完论文可以先去试试而对于 POJ1279/ZOJ1369 Art Gallery ,来说,其实也不复杂,只是点的顺序是按顺时针给出的,处理时注意下就好了再说说我的原创 2011-07-22 21:20:27 · 2948 阅读 · 4 评论 -
HDU4273 Rescue(2012 ACM/ICPC Asia Regional Changchun Online)
三维凸包,贴模板过的,不解释……#include#include#include#include#includeusing namespace std;const int MAXN=1001;const int N = 500;const double EPS=1e-8;int g[MAXN][MAXN];struct Point{ double x,原创 2012-09-12 15:52:43 · 1193 阅读 · 0 评论 -
ZOJ1010 Area (Asia 2001, Shanghai,计算几何)
题目大意是,给出一些点,这些点按顺序连接边,是否能围成一个多边形,能的话,输出多边形的面积,否则就输出不能。相信多数 WA 的盆友都和我一样是错在多边形判断那个环节了,题目说的不是太清楚,经测试,以及网上的各路大神的指点,这题包括两条边重合,两点重合,一个点和除了与其相邻的两条原创 2011-07-18 13:02:22 · 1569 阅读 · 0 评论 -
ZOJ1081 Points Within(判断点是否在多边形内部)
计算几何的基础知识考查,关键是分清楚所有的情况,不要漏掉某些情况原创 2011-07-18 07:58:22 · 1272 阅读 · 2 评论 -
POJ 1265 Area(ZOJ 1032)(pick定理)
<br /> <br />[Pick定理] 设以整数点为顶点的多边形的面积为S, 多边形内部的整数点数为N, 多边形边界上的整数点数为L, 则 <br />N + L/2 - 1 = S<br /> <br /> <br />要求输出三个数,第一个是多边形内部的整点数,第二个是多边形上的整点数,第三个是多边形的面积<br /> <br />暴搞户会超时,用 pick 定理的话,就不用算内部点数了,算线段上的点数,再算面积就好了。<br /> <br />#include<stdio.h>#incl原创 2011-05-19 19:34:00 · 1002 阅读 · 0 评论 -
HDU 2773 White Water Rafting(计算几何)
题意:给出两个多边形(二维坐标),保证第一个在第二个的内部,这样两个多边形就可以组成一个环,求一个圆,能在该环内饶一周,且要求该圆的半径尽量大,输出这个半径值。思路很明显,求点到线段的距离。开始的时候一直WA,不管怎么改,方法也换了不少,就是不对。后来还是 XH 在别人的blog上发现,我们少考虑了一种情况……就是这个了,当时想当然的只算了内环上的点到外环线段的距离,没考虑到还需要算外环上的点到内环的距离……代码:(求距离我是用的找垂足的方法,其实可以用向量乘来求,貌似更好)#include#inclu原创 2011-04-16 08:47:00 · 1352 阅读 · 0 评论 -
ZOJ 1608 Two Circles and a Rectangle(简单计算几何)
<br />按照给定的两个圆的参数,求出最小的满足条件的矩形,和题目给的矩形对比即可。<br />考虑要全面啊……切记……<br /> <br /><br /> <br />上图给出的就是矩形最小的情况,中间的直角三角形,满足(r1+r2)*(r1+r2)==(a-r1-r2)*(a-r1-r2)+(b-r1-r2)*(b-r1-r2)<br />,所有大于等于这种情况的都满足条件,否则不满足。<br /> <br />ps: 当然,求出这个最小矩阵的边长的方法很多,都是中学时的数学知识……LC用的就是设出原创 2011-04-17 13:42:00 · 1175 阅读 · 6 评论 -
ZOJ 1648 Circuit Board(判断线段相交)
<br />计算几何,思路挺简单的,基本的线段相交判断,各种模板各种整啊,出了繁琐以外不觉得有多少嚼头(有点嚣张了,面壁5秒)。<br /> <br />向量叉积,看下面的图,很NB(摘自:http://blog.csdn.net/xwebsite/archive/2010/07/31/5778325.aspx)<br /> <br /><br /> <br /><br /> <br />我的代码:<br /> <br />#include<stdio.h>#include<math.h>#incl原创 2011-05-01 00:29:00 · 824 阅读 · 0 评论 -
ZOJ 1597 Circular Area(POJ 2546)(两个圆的位置关系)
<br />圆的位置关系,按照两个圆的圆心间距 d 由远到近的顺序,可分为:<br />(两圆半径,R >= r)<br />相离,d > R+r;<br />相外切,d = R+r;<br />相交,R-r < d < R+r;<br />相内切,d = R-r;<br />内含:d < R-r。<br /> <br />本题要求输出两个圆相交的面积,所以需要先判断两个圆的位置关系,然后根据情况计算就可以了,不过相交的情况需要注意,看下面的图就懂了。<br /> <br /><br /> <br />代码原创 2011-05-04 17:33:00 · 1539 阅读 · 0 评论 -
ZOJ 2157 Building a New Depot(POJ 1788)
感觉这就不是计算几何题,是排序题……做两次二级排序,关键字是点的x,y坐标值。x优先排序时,计算共线的点 y 的差距绝对值之和,就是所有竖直(南北向)围墙长度;y优先排序时,计算共线点 x 的差距绝对值之和,就是所有横着(东西向)的围墙长度。两个加起来输出就好。ps:注意凹多形的情况,下面给几组数据就是凹的情况122 03 00 12 10 21 20 31 32 33 30 42 4The length of the fence will be 16 units. 81 21 32 12原创 2011-05-03 13:40:00 · 1946 阅读 · 7 评论 -
UESTC1560 Division(四川2011年省赛 D,计算几何)
说是逆时针给出一个凸多边形,然后给出凸多边形外一点,以这个点为起点做射线,要求该射线把多边形面积均分成两份,输出这条射线的单位向量开始我觉得是求出射线可能的张角范围,然后离散张角弧度,但是由于计算时需要多次用到三角函数,精度损失太严重(离散度我一度开到1e-8,机器跑了好久才出结原创 2011-07-24 10:42:48 · 2218 阅读 · 2 评论 -
ZOJ1886/POJ2540 Hotter Colder(半平面交)
题意是,有一个二维(0,0)到(10,10)的区域,一个人从(0,0)开始一次拜访区域内的点,去找一样东西(就在这个区域内),每次他到达一个新的点后,都会有一句话,来告诉你是离那个东西更近了(Hotter),还是更远了(Colder),或者距离不变(Same),然后让你算出,这时原创 2011-07-24 11:38:38 · 1767 阅读 · 0 评论 -
ZOJ 2010 Equipment Box(POJ 1380)(暴力离散化)
<br />zoj 跑了350ms,poj 跑了750ms……汗颜……<br /> <br />大意是给两个矩阵的长宽(A,B,X,Y),问长宽为X,Y的能否放进长宽为A,B的矩阵中。<br /> <br />要特殊考虑的是直接放放不进去,但是斜着放可以的,思路是把第二个矩阵旋转原创 2011-05-04 11:37:00 · 1310 阅读 · 0 评论 -
ZOJ 1041 Transmitters(计算几何)
每组实例给出一个圆心,半径r(半径为负值时结束),然后是若干个点(最多150个),求以所给圆心和半径,画半圆,最多能覆盖多少个所给点集中的点。先筛选出所给点集中哪些是在圆内的点,然后依次以这些点和圆心连线分割圆,统计半圆内点数,求出最大值 上代码#include#include#include#define N 160double dis(double x1,dou原创 2011-04-04 13:42:00 · 910 阅读 · 0 评论