计算几何
文章平均质量分 76
哎哟_不错哦
这个作者很懒,什么都没留下…
展开
-
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 · 1776 阅读 · 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 · 1608 阅读 · 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 · 442 阅读 · 0 评论 -
UVA 10078 The Art Gallery(凸包)
题意:判断是否为凸多边形,是就输出No,不是输出Yes分析:采用凸包解决,用Graham扫描算法,就出来了#include #include#include#includeusing namespace std;#define N 105#define EPS 1e-3struct point{ double x,y; point(d原创 2016-05-17 10:12:37 · 458 阅读 · 0 评论 -
UVA 10002 Center of Masses(凸包)
题意:判断是否为凸多边形。分析:用Graham扫描算法,就出来了#include #include#include#include#includeusing namespace std;#define EPS 1e-10#define N 100005struct point{ double a,b; point(){}原创 2016-05-16 22:47:29 · 577 阅读 · 0 评论 -
UVA, 681Convex Hull Finding(凸包)
题意:求凸包上的点。从那个最下面的点逆时针输出。分析:采用凸包解决,用Graham扫描算法,就出来了#include #include#include#includeusing namespace std;#define N 666#define EPS 1e-3struct point{ double x,y; point(double x原创 2016-05-16 22:40:49 · 548 阅读 · 0 评论 -
UVa 109 - SCUD Busters(凸包)
题意:输入n个国家,每个国家一些点,用围墙(多边形)围起来,围墙内的范围都属于这个国家,现在要发射一些导弹,如果导弹落到国家内,那对应的国家就会停电,现在问停电的总面积。分析:1,求凸包,Graham扫描先把围墙上的点求出来,凸包完成。2,求国家的面积,把多边形分成多个三角形,叉积a*b*sin就是三角形面积的两倍,然后相加求得多边形面积。3,判断点是否在多边形内,用射线进行判断,从该原创 2016-05-16 22:28:34 · 413 阅读 · 0 评论 -
poj 2187 Beauty Contest (凸包 Graham)
题意:给你n个点,求两点之间距离最大值(也就是相隔最远的两个点之间的距离)分析:采用凸包解决,先用Graham扫描算法,求出最外围的点,然后再求最外围两点之间的距离,得出最大的。#include #include#includeusing namespace std;#define N 50005struct point{ int x,y;原创 2016-05-15 17:24:27 · 251 阅读 · 0 评论 -
POJ, 2069 Super Star(模拟退火算法)
题意:给定几个点,要求覆盖这些点的最小球半径。分析:可以采用模拟淬火算法,随机选取一个点作为初始解,然后不断向当前距离最远点靠近,这是一个不断调整的过程,将对应模拟淬火算法中不断向内能最低(半径最小)这一目标函数逼近,温度对应控制变量。#include #include#include#include#include#includeusing n原创 2016-05-13 15:33:51 · 859 阅读 · 0 评论 -
HDU 3932 Groundhog Build Home (模拟退火算法)
题意:找出一个点使得这个点到n个点的最长距离最短。分析:模拟退火算法。#include #include#include#include#include#includeusing namespace std;#define N 1005#define NUM 20#define D 50#define EPS 1e-3double a[N],b原创 2016-05-13 15:26:24 · 1147 阅读 · 0 评论 -
POJ,2420 A Star not a Tree?(模拟退火算法)
题意:平面上给你n个点,让你求一个点,到这n点的距离和最小。分析:模拟退火算法。#include #include#include#include#includeusing namespace std;#define N 1005#define INF 1e20#define D 25#define EPS 1e-3double a[N],b[N原创 2016-05-13 15:25:07 · 894 阅读 · 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 · 649 阅读 · 0 评论 -
uva 10553 Treasure Map
题意:给你海盗的航海路线,终点为宝藏地点,然后你的路线是按照海盗的航海路线偏移一定的角度去航行,求你在途中距离宝藏最近的是相距多少。分析:先求出宝藏地点,然后求出宝藏地点到你航行的所有边的距离#include #include#include#include#includeusing namespace std;#define原创 2016-05-25 16:53:04 · 854 阅读 · 0 评论 -
UVA, 10180 Rope Crisis in Ropeland!
题意:求两点之间的最短距离,如果两点穿过圆,则距离是两条切线加一段弧长,图上有。分析: 用三角形的余弦定理和正弦定理,可以求出相应的一些角度,其实这道题就是一个简单的几何问题,几何会做这道题就会了。#include #include#include#include#include#includeusing namespace std;#原创 2016-05-25 16:46:03 · 464 阅读 · 0 评论 -
UVA, 10286 Trouble with a Pentagon
题意:求正五边形里面最大正方形的边长。分析: 以五边形最上面的顶点作为原点,建立直角坐标系,用三角函数求出五边形所有的点的坐标,所有点都求出来了,正方形的不就进一步求出来了。#include #include#includeusing namespace std;#define PI 3.14159265358979struct point{ doub原创 2016-05-25 16:37:17 · 397 阅读 · 0 评论 -
uva,132 Bumpy Objects (凸包,角度)
题意:自己百度吧,有全翻译的。分析:先求凸包,然后判断重心是否在凸多边形的边上面,也就是说边和重心组成的三角形,重心为顶点,下面两个底角不为钝角就是说明此时重心在线段上侧。然后遍历所有点,判断是否在该边上,找到该边上标号最大的点。#include #include#include#includeusing namespace std;#define N 9原创 2016-05-25 16:28:29 · 771 阅读 · 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 · 1494 阅读 · 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 · 1411 阅读 · 0 评论