计算几何
文章平均质量分 84
Tri_integral
这个作者很懒,什么都没留下…
展开
-
UVAlive 5866 Robot Arm Planning 题解
题目 题意: 有n+1的结点的链,每条边(结点圆心距)100,每个结点半径为10,每次可以旋转45°,但是不能自交。求是否通过旋转某些结点使得最上面的结点完全包含在一个矩形内。 题解: 首先矩形每条边向内缩10,这样只要最上面的点的圆心在新矩形即可。然后枚举所有节点旋转的角度,加上判断是否自交和剪枝,不会超时的。 因为时间紧,代码写的很丑,请轻拍…… //Time:22ms /原创 2013-07-21 22:58:04 · 1026 阅读 · 0 评论 -
UVALive 5795 Garden Fence
题意:给定平面上的两种点a和b,每个点有权值,要求画一条直线,并删除一些点,使得直线的每一侧只有一类点,并且删除的权值之和最小。 解法:枚举每一个点为中心,用atan2进行极角排序。再扫一遍中心点和每个点的连线,连线为射线,可以计算射线的反向延长线的极角。统计在这条直线一侧的两种点的个数(射线上的点包括端点算在内,延长线上的点不算),就可以计算出以这条直线分割的代价。扫下一条射线时,要把在当前射原创 2013-09-04 11:08:47 · 808 阅读 · 0 评论 -
CF 333E Summer Earnings
题意:给二维平面上的n个点(n 解法:可以转化为找一个最短边最长的三角形,圆心在三角形的三个顶点上。把n个点之间的连线长度从大到小排序,一条一条的加入集合中,如果当前当前线段的两个端点有两条在集合中且相交的线段,当前线段即为三角形的最短边。判断是否有交点可以用bitset简单粗暴的完成 关于bitset的用法 Member functions (constructor) Co原创 2013-09-04 22:02:03 · 1037 阅读 · 0 评论 -
HDU 4667 Building Fence 解题报告
题意:给n个圆和m个三角形,且保证互不相交,用一个篱笆把他们围起来,求最短的周长是多少。 解法1:在每个圆上均匀的取2000个点,求凸包周长就可以水过。 解法2:求出所有圆之间的外公切线的切点,以及过三角形每个顶点的的直线和圆的切点,和三角形的三个顶点。这些点做凸包确定篱笆边上的图形。凸包的边和圆弧之和即为所求。求圆弧长度的时候要判断是优弧还是劣弧。用叉积判断两个向量的方向关系即可。 //T原创 2013-08-14 15:54:25 · 891 阅读 · 0 评论 -
HDU 4637 Rain on your Fat brother
题意:和Maze在(x,0)位置吵架,Maze在0时刻离开,t时刻开始下雨,雨的速度都为v。Maze的速度为v1,Fat Brother的速度为v2,Fat Brother 从t时刻开始从(x,0)开始追赶Maze给她送伞,求Maze在雨中的时间。雨的竖直下落,且下落位置给出,雨可以看作是等腰三角形和半圆的组合体。 解法:容易计算出Maze在雨中的时间,把雨当成参考系,Maze的路径就是一条线段原创 2013-08-14 16:05:37 · 676 阅读 · 0 评论 -
SPOJ AMR12C Entmoot 解题报告
题意:给定n只蚂蚁在二维平面上的坐标,并且知道蚂蚁的速度,蚂蚁直线前进,找一个点,使得最迟到达这个点的蚂蚁花费的时间最小。 解法:二分到达的时间t,蚂蚁可以到达的范围是以它最初位置为圆心,t×v为半径的圆,如果这些圆都相交于某块地方,则表示当前的t可行,减小继续二分 //Memory: 3277 KB //Time: 1070 MS #include #include #include原创 2013-08-04 16:15:30 · 960 阅读 · 0 评论 -
poj 3774 Elune’s Arrow 解题报告
题意:从一个点发出一支箭(一条射线)射击指定敌人,箭在碰到敌人会停止。给出方向和人所在位置,问是否能击中指定目标。 解法:纯纯的几何……判线段相交和距离就好了。如果射线和除了目标以外的点有交点并且两点之间的距离小于射线和目标的距离,也要输出MISS #include #include #include #include #include #include #include u原创 2013-05-22 00:58:56 · 890 阅读 · 0 评论 -
FZU 1918 John’s Direction 解题报告
题意:给出一个点,和一堆边和坐标轴平行的多边形,问由这个点发出的射线不和多边形相交的角度之和。多边形是给出一个起点,然后通过向前走一定的距离和向左向右转90度得到的,且最后一个点是起点 解法:用atan2计算出起点和多边形每条边的极角的大小,然后统计不重叠的角度的大小之和。所得的是会和多边形相交的角度,再用360减就可以。 要注意的地方是,所得的交是小于180°的,如果用atan2计算出两角之原创 2013-05-24 00:13:36 · 882 阅读 · 0 评论 -
ZOJ 3720 Magnet Darts 解题报告
题意:随机往磁性矩形平面各个位置投掷磁性质点,质点会被吸到与其距离最近的整数点,相当与质点落在各个整数点的概率是相等的。在平面内部有一多边形,只有当质点落到多边形内部或者边缘才能得分,得分为a*x+b*y。a,b为题目给定,(x,y)是落点坐标。 解法:只要求出落在多边形内部和边缘的点。因为每个点所能吸收的区域是以该点为中心,边长为1的小矩形。落在大矩形顶点的点要*0.25,在边缘的点*0.5。原创 2013-07-01 19:30:19 · 1148 阅读 · 0 评论 -
UVA 12537 Radiation 解题报告
题目 题意: 有一些房子和两个点。每次查询给出以两个点为圆心的圆的半径,在一个圆内的房子发一套防化服,所以相交部分的房子有两套,不在圆内的没有。将相交部分的房子多余的防化服发给没有的房子后,求还有多少房子没有防化服。 题解: 因为最后有防化服的房子只由一套防化服,所以就是求发出了多少套防化服。将每个房子到两个点的距离预处理出来,那么对于给定的半径二分就知道有多少房子在圆内。 //原创 2013-08-05 20:42:19 · 1178 阅读 · 0 评论 -
UVALive 6179 Windmill Animation 解题报告
题意:给定平面上n个点的坐标,在一个点上放一条直线,并给出直线的方向,将直线以该点位轴逆时针转,遇到下一个点时,就以这个点为轴逆时针转动。按顺序输出前m次遇到的点的序列。 解法:有atan2计算点和坐标轴的夹角,在[-pi,0]的点变成[pi,2*pi]。找逆时针方向上距离当前直线最近的点就可以了。值得注意的是旋转的是直线不是射线,所以>pi的要减去pi #include #include原创 2013-07-21 01:25:24 · 912 阅读 · 0 评论 -
HDU 4617 Weapon 解题报告
比赛 题目 题意:给出空间中n个圆,院由圆心和圆上两点确定,且三点不共线,圆可以往两面延伸形成无限长的圆柱。问是否有圆柱相交,如果不相交,输出最短距离。 解法:用叉积求出所有圆柱轴线,然后计算直线间的距离是否大于两个圆柱半径之和来判断。听说可以用纯数学的方法,但我不会。 //time:15MS //memory:288K #include #include #include #in原创 2013-07-26 16:20:56 · 1072 阅读 · 0 评论 -
HDU 4709 Herding 解题报告
题意:给定平面上n个点,n 解法:面积最小的多边形肯定是三角形。所以n^3的枚举点就可以 //Time125MS //Memory 300K #include #include #include #include #include using namespace std; const int MAXN= 205; const double EPS = 1e-8; const dou原创 2013-09-12 09:39:06 · 927 阅读 · 0 评论