计算几何
文章平均质量分 84
哎哟_不错哦
这个作者很懒,什么都没留下…
展开
-
uva191 Intersection(线段之间相交)
题意:是否线段与矩形相交,线段在矩形内部也是相交。 公式:p1*p2=(x1*x2,y1*y2)(内积),p1xp2=(x1*y2,x2*y1)(外积) 判断q是否在线段p1-p2上面,根据(p1-q)x(p2-q)=0来判断q是否在直线p1-p2上。利用内积(p1-q)*(p2-q) p1-p2,q1-q2的交点: (x,y)=p1+(p2-p1)*((q2-q1)x(q1-p1)/((原创 2016-05-10 10:05:37 · 1761 阅读 · 0 评论 -
UVa 378 - Intersecting Lines
题目:给你平面上的两条直线,判断两直线关系,平行,重合,相交,如果相交求交点。 公式:p1xp2=x1*y2-x2*y1(外积) 判断q是否在线段p1-p2上面,根据(p1-q)x(p2-q)=0来判断q是否在直线p1-p2上。 两直线平行:(p1-p2)x(q1-q2)=0,为什么?把两条直线的斜率写出来并且令他们相等,这个等式就是这个公式。 p1-p2,q1-q2的交点: (原创 2016-05-09 20:32:56 · 1598 阅读 · 0 评论 -
poj 1127 Jack Straws(两线相交,并查集)
题意:给你n条线段,编号从1到n,然后判断两个线段(输入以0,0结束)是否相连(间接相连也算相连)。 分析: 公式:p1*p2=(x1*x2,y1*y2)(内积),p1xp2=(x1*y2,x2*y1)(外积) 判断q是否在线段p1-p2上面,根据(p1-q)x(p2-q)=0来判断q是否在直线p1-p2上。利用内积(p1-q)*(p2-q) p1-p2,q1-q2的交点:原创 2016-05-17 15:28:14 · 438 阅读 · 0 评论 -
UVA 10078 The Art Gallery(凸包)
题意:判断是否为凸多边形,是就输出No,不是输出Yes 分析:采用凸包解决,用Graham扫描算法,就出来了 #include #include #include #include using namespace std; #define N 105 #define EPS 1e-3 struct point { double x,y; point(d原创 2016-05-17 10:12:37 · 451 阅读 · 0 评论 -
UVA 10002 Center of Masses(凸包)
题意:判断是否为凸多边形。 分析:用Graham扫描算法,就出来了 #include #include #include #include #include using namespace std; #define EPS 1e-10 #define N 100005 struct point { double a,b; point(){}原创 2016-05-16 22:47:29 · 569 阅读 · 0 评论 -
UVA, 681Convex Hull Finding(凸包)
题意:求凸包上的点。从那个最下面的点逆时针输出。 分析:采用凸包解决,用Graham扫描算法,就出来了 #include #include #include #include using namespace std; #define N 666 #define EPS 1e-3 struct point { double x,y; point(double x原创 2016-05-16 22:40:49 · 539 阅读 · 0 评论 -
UVa 109 - SCUD Busters(凸包)
题意:输入n个国家,每个国家一些点,用围墙(多边形)围起来,围墙内的范围都属于这个国家,现在要发射一些导弹,如果导弹落到国家内,那对应的国家就会停电,现在问停电的总面积。 分析:1,求凸包,Graham扫描先把围墙上的点求出来,凸包完成。 2,求国家的面积,把多边形分成多个三角形,叉积a*b*sin就是三角形面积的两倍,然后相加求得多边形面积。 3,判断点是否在多边形内,用射线进行判断,从该原创 2016-05-16 22:28:34 · 398 阅读 · 0 评论 -
poj 2187 Beauty Contest (凸包 Graham)
题意:给你n个点,求两点之间距离最大值(也就是相隔最远的两个点之间的距离) 分析:采用凸包解决,先用Graham扫描算法,求出最外围的点,然后再求最外围两点之间的距离,得出最大的。 #include #include #include using namespace std; #define N 50005 struct point { int x,y;原创 2016-05-15 17:24:27 · 245 阅读 · 0 评论 -
POJ, 2069 Super Star(模拟退火算法)
题意:给定几个点,要求覆盖这些点的最小球半径。 分析:可以采用模拟淬火算法,随机选取一个点作为初始解,然后不断向当前距离最远点靠近,这是一个不断调整的过程,将对应模拟淬火算法中不断向内能最低(半径最小)这一目标函数逼近,温度对应控制变量。 #include #include #include #include #include #include using n原创 2016-05-13 15:33:51 · 850 阅读 · 0 评论 -
HDU 3932 Groundhog Build Home (模拟退火算法)
题意:找出一个点使得这个点到n个点的最长距离最短。 分析:模拟退火算法。 #include #include #include #include #include #include using namespace std; #define N 1005 #define NUM 20 #define D 50 #define EPS 1e-3 double a[N],b原创 2016-05-13 15:26:24 · 1140 阅读 · 0 评论 -
POJ,2420 A Star not a Tree?(模拟退火算法)
题意:平面上给你n个点,让你求一个点,到这n点的距离和最小。 分析:模拟退火算法。 #include #include #include #include #include using namespace std; #define N 1005 #define INF 1e20 #define D 25 #define EPS 1e-3 double a[N],b[N原创 2016-05-13 15:25:07 · 878 阅读 · 0 评论 -
POJ, 1379Run Away(模拟退火算法)
题意:在给定的范围内找一点,使得该点到所有点距离最小距离最大,求这个最大距离。 分析:模拟退火算法,先随便找一个点,然后运用模拟退火算法。 退火算法参考:http://www.cnblogs.com/heaad/archive/2010/12/20/1911614.html #include #include #include #include #i原创 2016-05-13 15:08:47 · 639 阅读 · 0 评论 -
uva 10553 Treasure Map
题意:给你海盗的航海路线,终点为宝藏地点,然后你的路线是按照海盗的航海路线偏移一定的角度去航行,求你在途中距离宝藏最近的是相距多少。 分析:先求出宝藏地点,然后求出宝藏地点到你航行的所有边的距离 #include #include #include #include #include using namespace std; #define原创 2016-05-25 16:53:04 · 824 阅读 · 0 评论 -
UVA, 10180 Rope Crisis in Ropeland!
题意:求两点之间的最短距离,如果两点穿过圆,则距离是两条切线加一段弧长,图上有。 分析: 用三角形的余弦定理和正弦定理,可以求出相应的一些角度,其实这道题就是一个简单的几何问题,几何会做这道题就会了。 #include #include #include #include #include #include using namespace std; #原创 2016-05-25 16:46:03 · 458 阅读 · 0 评论 -
UVA, 10286 Trouble with a Pentagon
题意:求正五边形里面最大正方形的边长。 分析: 以五边形最上面的顶点作为原点,建立直角坐标系,用三角函数求出五边形所有的点的坐标,所有点都求出来了,正方形的不就进一步求出来了。 #include #include #include using namespace std; #define PI 3.14159265358979 struct point { doub原创 2016-05-25 16:37:17 · 389 阅读 · 0 评论 -
uva,132 Bumpy Objects (凸包,角度)
题意:自己百度吧,有全翻译的。 分析:先求凸包,然后判断重心是否在凸多边形的边上面,也就是说边和重心组成的三角形,重心为顶点,下面两个底角不为钝角就是说明此时重心在线段上侧。然后遍历所有点,判断是否在该边上,找到该边上标号最大的点。 #include #include #include #include using namespace std; #define N 9原创 2016-05-25 16:28:29 · 766 阅读 · 0 评论 -
uva11343 - Isolated Segments(两线段相交)
题意:给你一些线段,求没有和其他线段相交的线段数量 公式:p1*p2=(x1*x2,y1*y2)(内积),p1xp2=(x1*y2,x2*y1)(外积) 判断q是否在线段p1-p2上面,根据(p1-q)x(p2-q)=0来判断q是否在直线p1-p2上。 利用内积(p1-q)*(p2-q) p1-p2,q1-q2的交点: (x,y)=p1+(p2-p1)*((q2-q1)x(q1-p1)/原创 2016-05-10 11:12:10 · 1489 阅读 · 0 评论 -
UVa 10902 Pick-up Sticks (线段与线段相交)
题目:有n根木条,一根一根的往一个坐标系上丢(给出木条两点的坐标),问最后不被覆盖的木条有哪些,即丢的木条如果和前面丢的木条交叉的话,就会覆盖前面那根木条。 公式:p1xp2=x1*y2-x2*y1(外积),p1*p2=(x1*x2,y1*y2)(内积) 判断q是否在线段p1-p2上面,根据(p1-q)x(p2-q)=0来判断q是否在直线p1-p2上。利用内积(p1-q)*原创 2016-05-09 22:42:56 · 1384 阅读 · 0 评论