随笔分类 - 计算几何
摘要:题意:给定一些点,要求找出由这些点集构成的最大三角形面积。分析:最大三角形的三个顶点必定在凸包上。求出凸包上的点后,枚举各种组合,得到最大面积。朴素算法的时间复杂度是(n^3),但可根据凸包的单峰性进行剪枝。这里用到Rotating Calipers algorithm枚举三角形的第一个顶点i,然后初始第二个顶点j=i+1,第三个顶点k=j+1,循环k+1直到Area(i,j,k)>Area...
阅读全文
摘要:变步长法属于模拟退火算法的一种。pku2790就可以使用这种方法求解。题意:是求一些空间点集的最小外接球半径。选取一个初始点,然后按一定步长前进,前进的方向选择为指向最靠近它的点。不断让步长衰减,过程中记录最优值。pku2420也是这种题型,可以参考IOI集训队2008年顾研的论文。题目链接:http://poj.org/problem?id=2069[代码]原文链接:unber的空间 PKU20...
阅读全文
摘要:判断点是否在多边形中:判断点P是否在多边形中是计算几何中一个非常基本但是十分重要的算法。以点P为端点,向左方作射线L,由于多边形是有界的,所以射线L的左端一定在多边形外,考虑沿着L从无穷远处开始自左向右移动,遇到和多边形的第一个交点的时候,进入到了多边形的内部,遇到第二个交点的时候,离开了多边形,……所以很容易看出当L和多边形的交点数目C是奇数的时候,P在多边形内,是偶...
阅读全文
摘要:包含点集所有点的最小圆的算法http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=450平面上有n个点,给定n个点的坐标,试找一个半径最小的圆,将n个点全部包围,点可以在圆上。1. 在点集中任取3点A,B,C。2. 作一个包含A,B,C三点的最小圆,圆周可能通过这3点,也可能只通过其中两点,但包含第3点.后一种情况圆周上的两点一定是位...
阅读全文
摘要:这一题其实并不难,昨天比赛时WA了,下来请教了队友,原来是用的矩形切割Problem 363462MS 224K本题思路:以出现的矩形端点为交点将所有的矩形分割成一个个小矩形,这里的点要求不重复且升序,正好用到set很方便(相当于离散化)。然后再把原来的矩形按照value的降序排列,将每个矩形所覆盖的且还没有着色小矩形块统统着色,并求价值和,即得结果。查找矩形覆盖的小矩形块时可用二分,但本题数据规...
阅读全文
摘要:旋转卡壳可以用于求凸包的直径、宽度,两个不相交凸包间的最大距离和最小距离等。虽然算法的思想不难理解,但是实现起来真的很容易让人“卡壳”。拿凸包直径(也就是凸包上最远的两点的距离)为例,原始的算法是这样子:Compute the polygon's extreme points in theydirection. Call themyminandymax. Construct...
阅读全文
摘要:模板:给定L1上两点(ax,ay),(bx,by),L2上两点(cx,cy),(dx,dy),求两直线交点(x,y)。[代码]1039Accepted200K63MS63MS是有些慢,这一题是刘汝佳的《算法艺术与信息学竞赛》P359的例题。思路:枚举上下两个顶点成光线所在直线,然后判断光线是否合法,合法的话枚举判断光线与管道上下壁是否相交,并存下最远的交点横坐标。代码
阅读全文
摘要:题目大意:求凸包边缘的长度解题思路:标准的凸包Graham算法[代码]PS;这题和ZJU1453、FOJ1333一样,但ZJU和FOJ上n==2时输出2*(p[0]-p[1]).len()。
阅读全文
摘要:题意:求一条射线经过一系列球反射后的反射点分析:从起点出发,求出射线与球的最近交点,然后更改反射线为入射线循环找射线与球的最近交点,直到没有球与射线相交。[代码] //pp 球心与直线p2-p1的垂足 point pp=(sgn(d)==0? s.c:s.c+((p1-s.c)*(p2-s.c)*(p1-p2)).turnlen(d) ); if(sgn((pp-p1)^(p2-p1))<=...
阅读全文
摘要:Accepted3471296MS200K对于速度V的方向有三种情况,可用V与ABCD面法向量的点积判断:1 V指向ABCD面外侧,或V与ABCD面平行,不可能进球;2 ball在ABCD面内侧,不可能进球;3 ball在ABCD面上,当且仅当 P在多边形ABCD内(不包括边界)才进球4 ball在ABCD面外侧,当且仅当 直线P+xV与ABCD面的交点Q在多边形ABCD内(不包括边界)才进球代码...
阅读全文

浙公网安备 33010602011771号