计算几何
hexianhao
这个作者很懒,什么都没留下…
展开
-
hdu 1086(判断两线段是否相交)
题意:给出一些线段,问有多少个交点。解题思路:这里实际就是一个线段相交的模型,下面这个图给出了思路。如果两线段相交,则两线段必然相互跨立对方。若P1P2跨立Q1Q2 ,则矢量 ( P1 - Q1 ) 和( P2 - Q1 )位于矢量( Q2 - Q1 ) 的两侧,即( P1 - Q1 ) × ( Q2 - Q1 ) * ( P2 - Q1 ) × ( Q2 - Q1 ) < 0。上原创 2016-04-26 11:12:54 · 501 阅读 · 0 评论 -
poj 3348(求凸包面积)
题意:一片草地上有n课树,现在你想用绳子圈出一个尽可能大的面积出来养牛。已知每只牛需要50单位的面积,问最多能养几只牛。解题思路:凸包的面积。这里一般的思路就是先求出凸包,再以最低点为顶点分割n-2个小三角形,这样只需要求n-2个三角形的面积即可。不过这样做可能精度损失有点大。最好的方法就是用向量的叉积,当然要取绝对值。#include#include#include原创 2016-04-30 11:09:56 · 816 阅读 · 0 评论 -
poj 1329(求三角形外接圆)
外接圆半径:公式:a/sinA=b/sinB=c/sinC=2R (R就是外接圆半径) 本题可以这样:①.先利用余弦定理:a^2=b^2+c^2-2bc·cosA 求出:cosA=(b^2+c^2-a^2)/2bc 在利用公式:sinA^2+cosA^2=1确定 sinA=根号(1-cosA^2) =根号[(a^2+b^2+c^2)^2-2(a^4+b^4+c^4)]/(2bc)原创 2016-04-30 11:43:48 · 787 阅读 · 0 评论 -
poj 3565(线段相交)
AntsTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 5907 Accepted: 1828 Special JudgeDescriptionYoung naturalist Bill studies ants in school. His an原创 2016-05-01 10:29:39 · 336 阅读 · 0 评论 -
poj 1696(极角排序)
题目让找出一条最长的非右拐的路径。这道题类似于凸包的Graham扫描法,依次对某点进行极角的排序。参考博客:http://blog.csdn.net/zhengnanlee/article/details/9501685#include#include#includeusing namespace std;struct Point{ int x, y, num;转载 2016-05-02 20:35:33 · 323 阅读 · 0 评论 -
poj 1981(单位圆覆盖点)
题意:一个单位圆最多能覆盖平面上多少点。解题思路:一个覆盖最多点的圆,必然至少有两个点在圆上。枚举两个点,求过这两个点的单位圆,判断有多少个点在圆中,枚举N^2,判断N参考博客:http://www.cnblogs.com/-sunshine/archive/2012/10/11/2719859.html#include#include#include#includeu原创 2016-05-03 10:52:13 · 1489 阅读 · 0 评论 -
poj 3565(计算几何,线段相交)
AntsTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 5907 Accepted: 1828 Special JudgeDescriptionYoung naturalist Bill studies ants in school. His an原创 2016-05-04 20:04:10 · 509 阅读 · 0 评论 -
poj 2079(旋转卡壳)
题意:求出平面内的点集所组成的面积最大的三角形。解题思路:考虑凸包+旋转卡壳。面积最大的三角形的三点必定在凸包的顶点上,只不过这里要注意,三角形的边不一定就是凸包的边,有可能三角形相邻两点是横跨凸包的。关键是如何找三个顶点。这里采用的类似于尺取法,先固定一个点,剩下的两个指针依次逆时针方向旋转,找到最大的面积。#include#include#include#in原创 2016-05-04 20:18:53 · 550 阅读 · 0 评论 -
hdu 3264(二分+圆相交面积)
题意:给出一些圆,选择其中一个圆的圆心为圆心,然后画一个大圆,要求大圆最少覆盖每个圆的一半面积。求最小面积。解题思路:首先枚举每个圆,以其圆心作为大圆的圆心,然后再用二分去寻找最小的半径。#include#include#include#includeusing namespace std;const int maxn = 20;const double ep原创 2016-05-05 10:00:24 · 470 阅读 · 0 评论 -
hdu 1558(线段相交+并查集)
题意:给你一些操作,P后边输入四个值,分别代表一条线段的起点、终点坐标,当输入Q时,后边输入一个整形值K,输出第k条线段所在的集合中包含的线段的个数。解题思路:线段相交+并查集,sum[i]表示i所在的线段集合中,i为根节点的线段总数。在合并时可以更新。#include#includeusing namespace std;struct point原创 2016-05-11 15:42:54 · 318 阅读 · 0 评论 -
poj 1584(凸包+点在凸多边形内+圆在凸多边形内)
题意:按照顺时针或逆时针方向输入一个n边形的顶点坐标集,先判断这个n边形是否为凸包。再给定一个圆形(圆心坐标和半径),判断这个圆是否完全在n边形内部。解题思路:1、判断该多边形是否是凸包,由于题目已经给定了顺时针或逆时针输入,只需判断相邻的三点是否是向左拐或向右拐即可,判断的方法是向量的叉积。2、判断圆心是否在凸包内,假定圆心为O,凸包上任意相邻原创 2016-04-28 21:32:10 · 1393 阅读 · 0 评论 -
hdu 2215(最小圆覆盖)
解题思路:最小圆覆盖,注意由于树也有半径,所以要加上树的半径0.5#include#include#include#include using namespace std;const double eps=1e-8;struct Point{ double x,y; }p[505];double dis(const Point &a,const Poin原创 2016-04-28 17:37:16 · 567 阅读 · 0 评论 -
hdu 1115(多边形重心)
求多边形重心的题目大致有这么几种: 1、质量集中在顶点上 n个顶点坐标为(xi,yi),质量为mi,则重心 X = ∑( xi×mi ) / ∑mi Y = ∑( yi×mi ) / ∑mi 特殊地,若每个点的质量相同,则 X = ∑xi / n Y = ∑yi / n 2、质量分布均匀 特殊地,质量均匀的三角形重心: X原创 2016-04-26 21:24:50 · 317 阅读 · 0 评论 -
hdu 1147(线段相交)
这道题跟1086是一样的思路,判断两线段是否相交。用跨立实验即可。#include#include#includeusing namespace std;const int maxn = 100024;struct Segment{ double x1,x2,y1,y2;}s[maxn];int n;bool vis[maxn];bool Segment_I原创 2016-04-26 21:41:15 · 524 阅读 · 0 评论 -
hdu 1392(求凸包周长)
Surround the TreesTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Problem DescriptionThere are a lot of trees in an area. A peasant wants to buy a rope t原创 2016-04-27 15:02:22 · 270 阅读 · 0 评论 -
poj 2187(凸包+旋转卡壳)
Beauty ContestTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 33122 Accepted: 10282DescriptionBessie, Farmer John's prize cow, has just won first place原创 2016-04-27 16:06:48 · 297 阅读 · 0 评论 -
hdu 1007(最近点对)
最近点对问题定义:已知上m个点的集合,找出对接近的一对点。 在二维空间里,可用分治法求解最近点对问题。预处理:分别根据点的x轴和y轴坐标进行排序,得到X和Y,很显然此时X和Y中的点就是S中的点。情况(1):点数小于等于三时: 情况(2):点数大于三时:原创 2016-04-28 10:26:49 · 368 阅读 · 0 评论 -
hdu 4643(简单计算几何)
GSMTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Problem DescriptionXiao Ming is traveling around several cities by train. And the time on the train原创 2016-04-28 12:49:38 · 483 阅读 · 0 评论 -
hdu 2857(对称点与直线交点问题)
Mirror and Light Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem DescriptionThe light travels in a straight line and always goes in the minimal p原创 2016-04-28 16:24:51 · 417 阅读 · 0 评论 -
hdu 3007(最小圆覆盖)
题意:给平面上的一些点,用半径最小的圆把所有点覆盖了。1、在点集中任取三个点A、B、C。2、做一个包含ABC三点的最小圆,圆周可能通过这三点,也可能只通过其中两点,但包含第三个点。后一种情况圆周上的两点一定是位于圆周直径的两端。3、在点集中找出距离第2步所建圆圆心最远的D点,若D点在已知的圆内或圆周上,即该圆即为所求的圆,算法结束,否则执行第4步。4、在A、B、C、D中选3原创 2016-04-28 17:11:12 · 1348 阅读 · 0 评论 -
hdu 5020(判断三点共线)
Revenge of CollinearityTime Limit: 8000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem DescriptionIn geometry, collinearity is a property of a set of points, spe原创 2016-06-19 21:55:52 · 1639 阅读 · 1 评论