计算几何
各类计算几何
tzteyang
这个作者很懒,什么都没留下…
展开
-
极角排序 叉积版
代码模板链接➡原创 2022-04-22 19:51:42 · 228 阅读 · 0 评论 -
2018-2019 ACM-ICPC, Asia East Continent Finals F - Interstellar … Fantasy (几何)
题意: 给出你一个球的球心坐标和球的半径,然后给出你起点和终点的坐标,问你想要从起点走到终点的最短路径是多长,路径不可以穿过球体,需要从表面绕过。 思路: 很明显分为两种情况 1.1.1.最短距离就是两点之间的连线。 2.2.2.最短距离需要经过圆的表面。 先考虑,最短距离就是两点连线的情况。设圆心OOO到线段ststst的距离为ddd,注意这里是到线段的距离,假如d≥rd \geq rd≥r,那么两点就可以连线且不经过圆直接到达。 再考虑经过圆的表面,通过s,ts,ts,t两点做球的切线,设两个切点为O1原创 2021-03-26 12:58:42 · 139 阅读 · 0 评论 -
2019ICPC南京站K-Triangle (计算几何+相似求解)
题意:给定你一个三角形的三个顶点,三角形一定是合法的,然后在给定你一个平面内的点,这个点可能不落在三角形的某一条边上,如果是这种情况那么就不合法输出-1,否则输出三角形边上的一个点的坐标使之与给定点连接形成的线段能够平分三角形的面积。 思路:首先合不合法的情况,我们可以利用叉积和点积判断,点要在三角形的边上,那么,叉积一定要等于0并且点积要是个负数,否则输出-1即可。 既然要平分面积, 假设给定的点p在点1,2那条边上,此时我们求出p到点1和点2的距离,如果d1 > d2(即图中p),否则为p’。这.原创 2020-12-10 20:24:15 · 552 阅读 · 0 评论 -
Codeforces 975E - Hag‘s Khashba (计算几何 + 多边形重心性质 + 旋转)
题意:看上去很复杂,就是他给定一个严格的凸多边形,然后hag有两个钉子,最开始他会把这个两个钉子钉在第一个顶点和第二个顶点处,然后这个多边形就被固定了。他有两种操作: 1 f t:hag会把第f个钉子给拆了,然后由于现在只有一个钉子钉在某个顶点上,那么这个多边形框就会在重力的作用下,摆动起来,最后停在某个位置时,这时再把拆下来的钉子放在t点。 2 v:输出在多边形上此时第v个坐标的是多少。 思路:首先我们需要知道,在重力作用下稳定的时候,重心是会和那个被固定的顶点在一条垂线上,也就是说他们两个这时候横坐..原创 2020-11-17 21:22:23 · 207 阅读 · 0 评论 -
2020ICPC·小米 网络选拔赛第一场 B-Intelligent Robot (叉积判相交+最短路)
题意:给定你k条线段的端点坐标,这k条线段相当于k道墙,小米机器人无法穿过每堵墙,但是可以沿着墙行走,然后给定你一个起始点坐标和终点坐标,问你从起点到终点最短的距离是多少即可。 思路:很明显假如没有墙的限制,那就是个裸的最短路,加上了墙的限制,就是对我们能够建边的点加上了限制。在这个题中,我们只需要把起点和终点再加上每条线段的端点放入一个vector中,然后枚举两个点形成的线段和其他所有的线段墙,只要他们之间不存在交点或者交点在端点处,这时枚举的两个点就可以建边,建完边后跑一遍最短路即可以解决问题了。 判.原创 2020-10-27 21:13:38 · 288 阅读 · 0 评论 -
HDU4773 圆的反演 模板题
反演变换的性质: 设O为反演中心。 1.圆O外的点反演之后在园内,圆O内的点反演之后在园外,圆O上的点反演之后仍在圆上。 2.不过点O的圆A,其反演图形,也是不过点O的圆。 3.过点O的圆,其反演图形是一个不过点O的直线。 4.若两图形相切,则他们的反演图形也相切。 5.两个不经过反演点的外切的圆,反演之后的图形为相交的两条直线,如果其中一个圆经过反演点,那么反演之后的图形为一个圆和它的一条切线并且反演点和反演后的圆的圆心在切线的同一侧,内切的话反演中心和反演圆的圆心在异侧。 圆的反演: 1.HDU4773原创 2020-10-07 17:31:48 · 223 阅读 · 0 评论 -
求两个圆公切线的模板
// a[i] 和 b[i]存放第 i 条公切线与 圆A 和 园B 的交点 // 返回值为切线的条数 如果没有切线返回值为-1 int getTangents(circle A, circle B, Point*a, Point *b){ int cnt = 0; // 以A为半径更大的那个圆进行计算 if(A.r < B.r) return getTangents(B, A, b, a); db d2 = (A.p-B.p).len2(); // 圆心距平方转载 2020-10-07 17:33:45 · 400 阅读 · 0 评论 -
2017CCPC网络赛 HDU6158-The Designer 圆的反演
题意;就如图示一样,两个圆内切,给定你两个圆的半径r1和r2,然后给定你一个n,要求你在这两个圆之间的空隙不断地添加新的圆,使新添加的圆能够,和它相邻的所有圆相切,(包括之前添加的圆)。问你生成的这个n个圆的面积是多少。 对圆的反演的问题,应该就是围绕着那几个基本性质进行图形的反演变化,多画画图多思考一下。 通过上面的图我们可以看到假如我们把反演中心放在两个圆的最左端,有性质我们可以得,这两个圆都会经过反演之后都会形成一条直线,如图所示的两条黑线左边是由大圆形成的,右边由小圆形成。然后那些填充的圆经过反.原创 2020-10-07 20:22:37 · 173 阅读 · 0 评论