随笔分类 -  计算几何

摘要:原题链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1412 题目要求判断是否有一条直线可以穿过所有的圆。 做法:把所有圆心做一次凸包,然后判断这个凸包是否能通过一个宽度为2*R的通道。 做法和求凸包直径差不多,只是判断的时候把点到两... 阅读全文
posted @ 2014-04-27 15:12 芒果布丁 阅读(292) 评论(0) 推荐(0)
摘要:原题传送:http://poj.org/problem?id=1696 利用叉积判断所有点与线段位置关系。下一棵植物A'的位置与蚂蚁位置A的连线得到线段AA',如果所有没有吃掉的植物均在AA'的左端,那么A'为应该吃的下一目标(如果多个植物在同一条直线上,先吃最近的一个)。因为无论坐标如何变化,在最有的状态下,蚂蚁总会把所有植物都吃掉,可以利用这个条件退出循环。View Code 1 #include <stdio.h> 2 #include <math.h> 3 #include <string.h> 4 #include 阅读全文
posted @ 2012-11-03 13:51 芒果布丁 阅读(225) 评论(0) 推荐(0)
摘要:原题链接:http://poj.org/problem?id=2826 这道题要的思路很容易,但把代码写丑也很容易。 接到的水的截面体积为0的情况有: 1. 两条线段不相交; 2. 其中任意一条线段水平; 3. 两条线段重合; 4. 相交的情况下,最高的端点遮住了次高的端点 这道题断断续续搞了一周才搞定,POJ上wa了几个版面。几何题,同样的功能不同的写法是wa与ac的鸿沟,唉~~~View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include < 阅读全文
posted @ 2012-10-31 18:39 芒果布丁 阅读(231) 评论(0) 推荐(0)
摘要:原题传送:http://poj.org/problem?id=1066 不用管“门要在墙壁中央”这个条件,直接枚举每个分割区间的中点为进入点,然后再求该进入点与藏宝点的线段与所有线段的最少交点数(不管路线怎么折,这个贪心策略都是正确的)。注意n=0的情况,注意线段相交精度(去除在端点相交的情况)。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <algorithm> 4 #include <vector> 5 #define eps 1e-10 6 using nam 阅读全文
posted @ 2012-10-20 21:02 芒果布丁 阅读(151) 评论(0) 推荐(0)
摘要:原题链接:http://poj.org/problem?id=2653 线段相交。 从后往前筛TLE,从前往后却AC了,数据坑爹。View Code 1 #include <cstdio> 2 #define maxn 100005 3 const double eps = 1e-8; 4 struct segment 5 { 6 double x1, y1, x2, y2; 7 }seg[maxn]; 8 9 double min(double a, double b)10 {11 return a < b ? a : b;12 }13 14 double max... 阅读全文
posted @ 2012-10-20 18:25 芒果布丁 阅读(149) 评论(0) 推荐(0)
摘要:原题传送:http://acm.hdu.edu.cn/showproblem.php?pid=1392 以下内容转自http://dev.gameres.com/Program/Abstract/Geometry.htm#凸包的求法 求凸包。凸包的概念: 点集Q的凸包(convex hull)是指一个最小凸多边形,满足Q中的点或者在多边形边上或者在其内。下图中由红色线段表示的多边形就是点集Q={p0,p1,...p12}的凸包。凸包的求法: 现在已经证明了凸包算法的时间复杂度下界是O(n*logn),但是当凸包的顶点数h也被考虑进去的话,Krikpatrick和Seidel的剪枝搜... 阅读全文
posted @ 2012-09-14 18:06 芒果布丁 阅读(198) 评论(0) 推荐(0)
摘要:原题传送:http://acm.hdu.edu.cn/showproblem.php?pid=3694 题意很简单,求平面四个点的费马点。 这道题直接枚举所有情况: 1.四个点独立不重叠,这种情况又分为两种情况: a.四个点构成凸四边形,那么对角线交点就是费马点 b.四个点构成凹四边形,那么费马点肯定是凹的那个点 (因为漏了这个情况wa了10多次) 2.四个点中有重复的点,费马点就是重复的那个点View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <math.h> 4 #include 阅读全文
posted @ 2012-09-13 10:10 芒果布丁 阅读(249) 评论(0) 推荐(0)