【计算几何】
nyist_xiaod
这个作者很懒,什么都没留下…
展开
-
HDU 3548 Enumerate the Triangles(找周长最小的三角形)
题目链接:Click here~~题意:平面上有n(n解题思路:如果直接枚举的话,是O(n^3)肯定会超时,所以要优化。首先我们考虑,周长c=L1+L2+L3,所以推得c > 2Li,假设Li的端点为点a、b,则又有Li>=| Xa-Xb |,故c > 2*| Xa-Xb |。可以先按照X坐标从小到大排序,然后当已得到的最小值ans #i原创 2012-07-15 09:24:30 · 2216 阅读 · 0 评论 -
点和线段、线段和线段的关系
这篇文章还不错 : http://blog.csdn.net/william001zs/article/details/6213485 1、Onseg() 判断点是否在线段上。2、Dis() 求点到线段的距离。3、Meet() 判断两条线段是否相交。#include #include #include #include using namespace std;#翻译 2012-09-01 14:44:37 · 1914 阅读 · 0 评论 -
HDU 3264 Open-air shopping malls(圆的面积交+二分)
题目链接:Click here~~题意:给你 n 个圆,作一个新的圆(以 n 个圆里面的一个圆心为圆心),要求将所有的圆覆盖至少一半的面积,求出最小半径。解题思路:主要是求圆的面积交,之后就可二分了。大致思路是:用两个扇形的面积 - 四边形的面积。#include #include #include using namespace st原创 2012-10-08 15:27:51 · 1198 阅读 · 0 评论 -
求两条直线(线段)的交点
如图,如何求得直线 AB 与直线 CD 的交点P?以上内容摘自《算法艺术与信息学竞赛》。思路就是利用叉积求得点P分线段DC的比,然后利用高中学习的定比分点坐标公式求得分点P的坐标。看不懂的可以去复习下 定比分点 的知识。#include #include #include #include using namespace std;#define翻译 2012-09-06 22:31:03 · 35385 阅读 · 6 评论 -
求凸包
Graham's Scan法 求解凸包问题。我写的是按照逆时针扫描,其中叉乘函数返回的是的结果。凸包的结果保存在栈S[0...top]中。PS:1、求凸包时,必须确定至少有3个点。2、一般把极点 S[0] 在最后 S[top+1] 处复制一份,便于计算。3、初始化放2个点即可,3个点可能有bug(考虑开始三个点即 P[0]、P[1]、P[2] 共线的情况)。翻译 2012-08-31 16:56:44 · 2228 阅读 · 1 评论 -
HDU 1115 Lifting the Stone(求多边形重心)
题目链接:Click here~~题意:RT。解题思路:http://www.cnblogs.com/jbelial/archive/2011/08/08/2131165.html求重心时需要注意的地方:1、总面积为0的时候,因为总面积会作除数。(本题没有出现)2、面积要用有向面积。(考虑凹多边形的情况,如下图)#原创 2012-09-06 15:02:55 · 1649 阅读 · 1 评论 -
POJ 1106 Transmitters(离散化)
题目链接:Click here~~题意:给你一个点的坐标和半径,然后给平面上的点集S,求以这个点为圆心的半圆最多能覆盖S中的点的个数。解题思路:首先,只有圆内或圆上的点才有可能被覆盖,所以先预处理将圆外的点全部舍弃。然后,直观的想法是枚举每个角度,然后计算符合条件的点的个数。但是这种想法是无法实现的,因为你无法确定每次要旋转多少度。接着,引入 离原创 2012-09-05 22:06:50 · 1016 阅读 · 0 评论 -
POJ 2318 TOYS(叉积+二分)
题目链接:Click here~~题意:有一个矩形的盒子,中间插了n个挡板,将盒子分成n+1个区域,然后给m个点,问最后每个区域落下多少个点。(点不会落到挡板上)解题思路:把矩形的右边看成第n+1个挡板。稍加分析,得到这个特点:若点 k 在挡板 i 的左边,那么 k 也一定在挡板 j 的左边(i 则对于每一个点k,只要找到最小的挡板 i ,满足点原创 2012-09-05 08:45:50 · 652 阅读 · 0 评论 -
URAL 1348 Goat in the Garden 2(点到线段的距离)
题目链接:Click here~~第二道计算几何,虽然方法很笨,但还是想记录下。题意:求某点到一条线段的最小距离与最大距离。解题思路:稍加分析可知,最大距离一定在端点处取得。求最小距离时,先求出垂线与线段所在直线的交点,然后判断交点在不在线段上。如果在,则最小距离为垂线段的距离,即交点到此点的距离。如果不在,则最小距离必在另一原创 2012-08-01 11:37:09 · 807 阅读 · 0 评论 -
三分查找
我们都知道 二分查找 适用于单调函数中逼近求解某点的值。如果遇到凸性或凹形函数时,可以用三分查找求那个凸点或凹点。下面的方法应该是三分查找的一个变形。如图所示,已知左右端点L、R,要求找到白点的位置。思路:通过不断缩小 [L,R] 的范围,无限逼近白点。做法:先取 [L,R] 的中点 mid,再取 [mid,R] 的中点 mmid,通过比较 f(mid) 与 f(mmi翻译 2012-08-31 11:24:15 · 1882 阅读 · 0 评论