计算几何
文章平均质量分 73
AC_Gibson
这个作者很懒,什么都没留下…
展开
-
HDU2073 无限的路
#include #include #include using namespace std;double distancen(int x,int y){ double dis=0; double temp=sqrt(2.0); for(int i=1;i dis+=(i*temp); dis-=(y*temp);原创 2014-10-27 13:11:10 · 1015 阅读 · 0 评论 -
HDU1392 Surround the Trees 简单凸包
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1392题目大意:平面上有n个点代表n棵树,现在要把这些树用绳子围起来,求最少需要的绳子长度。分析:简单求凸包问题。实现代码如下:#include #include #include #include using namespace std;typ原创 2015-08-10 09:46:55 · 497 阅读 · 0 评论 -
HDU1007 Quoit Design 求最小距离
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1007题目大意是输入一些点,求出这些点中的最小距离,然后除以2即为最终答案。分析:可以先把这些点按坐标大小排列一下,然后再找最小距离。实现代码如下:#include #include #include #include using namespace st原创 2014-08-14 17:28:17 · 546 阅读 · 0 评论 -
HDU1249 三角形 递推
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1249分析:知道了直线和折线分割平面的情况这题就很简单了。我们知道,对于第i个三角形来说,其前面已经有了(i-1)个三角形==>有(3i-3)条边,对于第i个三角形,其每一条边最多能和之前的每个三角形的2条边有交点,即能和前面的(2i-2)条边各有一个交点,而这些交点会把第i个三角形的一条边原创 2015-06-03 21:27:38 · 1168 阅读 · 0 评论 -
HDU1290 平面分割空间
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1290分析:参考直线分割平面,我们知道平面分割与线之间的交点个数有关,即交点决定分割的线段和射线的条数,而线段和射线的条数决定分割的平面数,那么对应于三维空间当中,很容易想到,空间分割理应和平面的交线数有关,而事实也是如此。当有n-1个平面时,分割的空间数为f(n-1),那么第n个平面要想分原创 2015-06-04 16:00:32 · 600 阅读 · 0 评论 -
HDU2050 折线分割平面 动态规划
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2050 分析:首先我们来看一直线分割平面,直线分割平面时,每增加n个结点,就会增加n+1个平面,我们用f(n)来表示n条直线最多分割出的平面数,那么就有f(n)=f(n-1)+n;其中f(1)=2;即每新加一条直线,都使他和原先所有的直线都有交点,原先有n-1条直线,那么新加一条直线后,就会原创 2014-11-23 11:10:47 · 1205 阅读 · 0 评论 -
2015编程之美资格赛:基站选址 暴力
第三题:基站选址题目链接:http://hihocoder.com/contest/msbop2015qual/problem/3分析:小数据直接暴力就OK了,至于大数据吧========还没思路(别打我...我菜我认了)实现代码如下:#include #include #include using namespace std;#define INF 0x7原创 2015-04-19 19:49:00 · 715 阅读 · 0 评论 -
HDU5251 矩形面积 凸包-矩形覆盖
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5251分析:凸包-矩形覆盖。找出最小的矩形,使其覆盖已知的所有矩形。实现代码如下:#include#include#include#includeusing namespace std;#define PR 1e-8#define N 4010#define m原创 2015-06-03 20:57:19 · 870 阅读 · 0 评论 -
HDU2135 Rolling table 模拟题
题目大意:#include #include using namespace std;int main(){ char ans[12][12]; int m,n,i,j; while(cin>>n>>m) { for(i=0;i scanf("%s",ans[i]); if(m原创 2014-11-06 10:02:07 · 637 阅读 · 0 评论 -
计算几何之线段性质(一):判断两线段相交
给定两个点:typedef struct { double x, y;} Point;Point A1,A2,B1,B2;首先引入两个实验:a.快速排斥实验设以线段A1A2和线段B1B2为对角线的矩形为M,N;若M,N 不相交,则两个线段显然不相交;所以:满足第一个条件时:两个线段可能相交。 b.跨立实验如果两线段相交,则两线段必然相互跨立原创 2015-01-30 11:36:30 · 905 阅读 · 0 评论 -
POJ2653 Pick-up sticks 线段相交
题目大意:有n个木棒(可视为线段),随机扔到平面坐标系中,问你有哪些木棒上面没有压其他的木棒。典型的求线段相交的问题,把输入的木棒视为线段,分别看该木棒后面的木棒中有没有和他相交的。还有就是本题的时间卡的比较少,O(n^2)的复杂度都有可能爆。刚开始我是按正序判断的,即找出当前木棒前面的木棒中有没有和他相交的,这样一来就做了很多的无用功,比如第一根木棒和第二根木棒相交了,我们已经标记了第一根木原创 2015-02-04 17:53:28 · 531 阅读 · 0 评论 -
计算几何之线段性质(二):求线段交点
求线段的交点即求线段交点的坐标。若已确定两线段相交,可以通过解析几何中的直线方程来求解交点,这里介绍另外的一种方法。叉积multi(p1,p2,p0)可以看做是由点P1,P2,P0和P1+P2,这四个点围成的平行四边形的面积(如下图所示),及三角形P0P1P2的面积S=1/2 multi(P1,P2,P0)在下图中,线段AB和CD相交于点P。我们分别从D点和原创 2015-02-02 09:36:20 · 2204 阅读 · 2 评论 -
POJ1269 Intersecting Lines 计算几何
几何题。题目大意:给你4个点,问你其确定的两条直线间的位置关系:平行,相交或是重合,如果相交,求出交点坐标。因为数据只有上述三种情况,故我们可以先确定这两天直线是否平行或重合,如果不是,直接求出他们交点的坐标即可代码如下:#include #include using namespace std;typedef struct node{ double x,y;}p原创 2015-02-02 20:30:18 · 484 阅读 · 0 评论 -
HDU1174 爆头 叉积求距离
几何题。要判断警察是否能爆头,我们只需判断匪徒头中心到子弹轨迹的距离是否小于匪徒头部半径即可。由于题中没给出直线方程,这能借助方向向量,很自然就想到了叉乘求距离。 点B到直线AC的距离 |AB X AC|/|AC| ‘X’是叉乘 ’ || ‘表示模 ;那么这题就没什么多说的了#include #include using namespace std;int m原创 2015-01-11 21:46:42 · 961 阅读 · 0 评论 -
HDU2036 改革春风吹满地
#include #include #define MAX 1000using namespace std;typedef struct A{ double x,y;}POINT;POINT p[MAX];double mul_cross(POINT a,POINT b){ return ((a.x-p[0].x)*(b.y-p[0].y)-原创 2014-10-15 13:13:01 · 489 阅读 · 0 评论 -
HDU5476 Explore Track of Point 几何题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5476题目大意:一个等腰三角形ABC,AB=AC,M是BC的中点,让在三角形中找出一点P,使得∠MPB+∠APC=∠MPC+∠APB,找出P的轨迹的长度。分析:P的轨迹如下图:接下来直接计算就行了。实现代码如下:#include #include原创 2015-09-28 17:38:16 · 574 阅读 · 0 评论