随笔分类 - Computational Geometry
摘要:托勒密定理 ac+bd=mn1.对角互补的四边形为什么一定有外接圆?2.已知:四边形ABCD中,∠A+∠C=180°求证:四边形ABCD内接于一个圆(A,B,C,D四点共圆) 证明:用反证法 过A,B,D作圆O,假设C不在圆O上,刚C在圆外或圆内, 若C在圆外,设BC交圆O于C’,连结DC’,根据圆内接四边形的性质得∠A+∠DC’B=180°, ∵∠A+∠C=180°∴∠DC’B=∠C 这与三角形外角定理矛盾,故C不可能在圆外。类似地可证C不可能在圆内。 ∴C在圆O上,也即A,B,C,D四点共圆。3. 求证:四边形ABCD有外接圆的充要条件是S=√((p-a)*(
阅读全文
摘要:一.概念引入 AC过后,突然想起费马点和最小覆盖圆的圆心有关系吗?答案是没关系,如下图:费马点肯定在等腰梯形内,不是在圆心。 模拟退火算法与初始值无关,算法求得的解与初始解状态S(是算法迭代的起点)无关;模拟退火算法具有渐近收敛性,已在理论上被证明是一种以概率收敛于全局最优解的全局优化算法;模拟退火算法具有并行性。 三...
阅读全文
摘要:以HDU2108为例,去AC吧。//点逆序输入import java.util.Scanner;//1spublic class HDU2108 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true) { int x,y; int n = sc.nextInt(); if(0==n) { break; } Point[] p = new Point[n]; for(...
阅读全文
摘要:一.算法 方法一:先判断矩形是否在圆内(矩形的四个顶点是否在圆内),若是则不相交,否则再判断圆心到矩形四条边的最短距离(点到线段的最短距离)是否存在小于半径的,若是则相交(认为矩形包括圆是不相交的,已经先排除了)。方法二:圆分平面为四部分, 方法二:圆分平面四部分,不相交的情况分了几种:长方形在圆形上面,长方形在圆形下面,长方形在圆形左边,长方形在...
阅读全文
摘要:一.点到直线距离 已知一个点P(X0, Y0), 求点到直线Ax + By + C = 0的距离公式为:d = [AX0 + BY0 + C的绝对值]/[(A^2 + B^2)的算术平方根],如求点P(-1, 2)到直线2X + Y - 10 = 0的距离:X0 = -1, Y0 = 2, A = 2, B = 1, C = -10 代入公式 d =[2 ...
阅读全文
摘要:一.概念引入 最接近点对问题的提法是:给定平面上n个点,找其中的一对点,使得在n个点的所有点对中,该点对的距离最小。严格地说,最接近点对可能多于1对。为了简单起见,这里只限于找其中的一对。 最简单的就是直接暴力,也可以分治,使用分治的话关键是如何合并,如果两边都是n/2个点比较的话,合并的时间是O(n^2),那么T(n)=2T(n/2)+O(n2),它的解为T(n)=O(n2),还是没什么优势,这就引导我们去优化合并算法。 为了找到一个有效的合并算法,可以先考虑一维情形,看下图: 假设左右两边的最小距离是ans={ans1,ans2},很有可能最小距离分别存在于直线两端p3、q3,如果真是这样
阅读全文
摘要:一.求两直线交点class Point { double x; double y; public Point() { this.x = 0; this.y = 0; }}class Line { Point a; Point b; public Line() { this.a = new Point(); this.b = new Point(); } //求两直线的交点,斜率相同的话res=u.a Point intersection(Line u,Line v...
阅读全文
摘要:最近为了研究最小覆盖圆,需要求圆心,所以随手download了几份资料。若是平面点得到的是平面圆,若是三维空间点得到的是空间圆(不是球)。一.第一种方法这种方法当k1或者k2为0时需要分别讨论,不便于计算机编程实现。二.第二种方法 这种方法下只要三点不共线就有结果,三点共面的充要条件是混合积(a*(bXc))为0。
阅读全文
摘要:一.问题描述 凸集(Convex Set): 任意两点的连线都在这个集合内的集合就是一个凸集. ⒈对于一个集合D,D中任意有限个点的线性组合的全体称为D的凸包。 ⒉对于一个集合D,所有包含D的凸集之交称为D的凸包(由此定义可以想到分治算法)。 可以证明,上述两种定义是等价的。点集Q的凸包(convex hull)是指一个最小凸多边形,满足Q中的点或者在多边形边上或者在其内。下图中由红色线段表示的多边形就是点集Q={p0,p1,...p12}的凸包。一组平面上的点,求一个包含所有点的最小的凸多边形,这就是凸包问题了,这可以形象地想象成在地上放置一些不可移动的...
阅读全文
摘要:Leftmost DigitTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8550 Accepted Submission(s): 3296Problem DescriptionGiven a positive integer N, you should output the leftmost digit of N^N.InputThe input contains several test cases. The first line of
阅读全文
摘要:Regular PolygonTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others)Total Submission(s): 2515 Accepted Submission(s): 782Problem DescriptionIn a 2_D plane, there is a point strictly in a regular polygon with N sides. If you are given the distances between it and N vertexes
阅读全文
摘要:The number of divisors(约数) about Humble NumbersTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1708 Accepted Submission(s): 833Problem DescriptionA number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4,
阅读全文
摘要:士兵队列训练问题Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2020 Accepted Submission(s): 885Problem Description某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一
阅读全文
摘要:两车追及或相遇问题Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 598 Accepted Submission(s): 174Problem Description外号叫“猪头三”的小学生在数学课上,经常遇到两车相遇或追及的方程题,经过长时间的练习,他发现了许多规律,然而他不懂计算机,他想请你帮忙编写一个计算机程序,解决他的问题。题目的描述是这样的:甲、乙两地相距L公里,A车的速度为VA公里/小时,B车的速度为VB公里/小时,A车和B车开始
阅读全文
摘要:Game of ConnectionsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2101 Accepted Submission(s): 1208Problem DescriptionThis is a small but ancient game. You are supposed to write down the numbers 1, 2, 3, ... , 2n - 1, 2n consecutively in clockwis
阅读全文
摘要:To The MaxTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5027 Accepted Submission(s): 2388Problem DescriptionGiven a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of size 1 x 1 or greater loc
阅读全文
摘要:神、上帝以及老天爷Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 13598 Accepted Submission(s): 5817Problem DescriptionHDU 2006'10 ACM contest的颁奖晚会隆重开始了!为了活跃气氛,组织者举行了一个别开生面、奖品丰厚的抽奖活动,这个活动的具体要求是这样的:首先,所有参加晚会的人员都将一张写有自己名字的字条放入抽奖箱中;然后,待所有字条加入完毕,每人从箱中取一个字条
阅读全文
摘要:I Think I Need a HouseboatTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5395 Accepted Submission(s): 1615Problem DescriptionFred Mapper is considering purchasing some land in Louisiana to build his house on. In the process of investigating the l
阅读全文
摘要:多边形重心问题时间限制:3000 ms | 内存限制:65535 KB难度:5描述在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接),所有线段不和其他线段相交,但是可以重合,可得到一个多边形或一条线段或一个多边形和一个线段的连接后的图形; 如果是一条线段,我们定义面积为0,重心坐标为(0,0).现在求给出的点集组成的图形的面积和重心横纵坐标的和;输入第一行有一个整数0<n<11,表示有n组数据;每组数据第一行有一个整数m<10000,表示有这个多边形有m个顶点;输出输出每个多边形的面积、重心横纵坐标的和,小数点后保留三位;
阅读全文