![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算几何
文章平均质量分 51
marx97 ٩
这个作者很懒,什么都没留下…
展开
-
Commentator problem(CF 2)
题目链接题目大意:给定三个圆,询问是否存在点满足该点与三个圆夹角均相等,若存在多组解返回夹角最大值。圆外一点到两圆夹角均相等:即 sina = sinb = r1 / d1 = r2 / d2即 d1 / d2 = r1 / r2引出阿波罗尼斯圆定义:平面上相异两点A B, 且P 与A B在同一平面内, PA / PB = k (k > 0 且 k != 1), 则 P点的轨迹是圆,把他称为阿波罗尼斯圆。注意到当k等于1时P点的运动轨迹在A,B的中垂线上,那么此题就转化为直线求交、直线原创 2022-03-06 21:43:19 · 316 阅读 · 0 评论 -
CF 1575 M (斜率优化dp/ convex hull trick)
事情的起因是平平无奇的一道CF签到题然后大概题意就是给定一个地图,图中有一些光源,对于一个点(x, y)来说,他的权值为 他到距离他最近点的欧式距离的平方。嗯,是个人都会想到爆搜嘛 then…T4了,然后惊奇的想到了多个点同时开始bfs,上下左右,就很和谐,,//WA6, 然后打表发现先后更新顺序导致有个点被错误覆盖了,然后胡x搞了下把bfs方向从四个变成八个,然后…T24。。。 咳咳, 仔细思考了一晚发觉他的正确bfs顺序其实是个…hh 然后总算知道了一个正确bfs的顺序。。const int N原创 2022-01-03 01:29:13 · 289 阅读 · 0 评论 -
Ancient Berland Circus(CF 1 C 浮点数GCD)
题目链接题目大意:给定正x边形的三个顶点坐标,判断出其最小面积取值时是几边形,并求出他的面积。知识背景:1.浮点数取模2.硬算3.海伦公式:p = (a+b+c)/24.三角形外接圆半径:5.正x边形面积计算公式:6. 圆周角定理:一段弧的圆周角等于圆心角的一半。先mark浮点数取模的两种方法://法一:double fgcd(double x, double y){ while(fabs(x)>eps && fabs(y)>eps){ if原创 2021-12-05 18:48:40 · 282 阅读 · 0 评论 -
Eligible Segments (CF 1588 E)
题目链接题目大意:给定 n 个点,问从中能找出多少条线段,使剩余n-2个点到该线段的距离均不大于R。前置知识:点a到线段bc的距离,可以转换为点a到射线bc和射线cb距离的最大值。解题思路:要使线段p[i]p[j]到剩余n-2个点的距离均小于R,即满足射线p[i][j]到剩余n-2个点的距离小于等于R && 射线p[j]p[i]到剩余n-2个点的距离小于等于R。而对于一个点来说,能满足其出发的射线到剩余n-1个点距离都小于等于R即求该点到剩余n-1个以R为半径的圆的两条切线的角原创 2021-12-01 14:45:19 · 4904 阅读 · 0 评论 -
2020 ICPC 昆明站 I(Mr. Main and Windmills)
题目链接题目大意:给定 n 个点 m 个询问, 在给出一条线段,人从线段的st走到ed,每次询问查询第h个点在视野中发生第k次交换时人所处的位置。思路:1:对于每次询问第h个点时,对其为原点做极角排序,2:先n2枚举预处理每组直线,二维结构体数组存直线与(路径)线段交点以及交点与(路径)线段起点的距离。最后询问中可以采用对结构体h层进行nth_element查询(O(n) ), 或者可以对第h层sort(O(nlogn) );注意坑点 k > n-1 输出 -1 ;代码如下:#i原创 2021-11-28 15:46:25 · 4301 阅读 · 0 评论 -
2021 ccpc 桂林站 F - Illuminations II(gym 103409)
题目链接题目大意:给定两个凸包,保证内凸包严格在内求照亮边界的期望值,拿到题目一推就能发现题目实际是求m条内凸包边右侧的外凸包边长和 * 该内凸包边长 的和 / 外凸包的总长。思路:双指针,准确来说是三指针,i 表示内凸包 p[i] --> p[i+1](L) 的边,k 指向直线 L 与外凸包的终边 P[k] --> P[k+1], j 指向 直线 L 与外凸包的起始边 P[j] --> P[j+1] 。但注意不要使用直线与线段判交点 , 正方形对角线数据 会使程序死循环。此外原创 2021-11-16 20:08:00 · 5294 阅读 · 2 评论 -
Immortal Jewels Aizu - 2201
先占个坑,调不过去是真恶心…ps:#include <bits/stdc++.h>#define In inline#define pi (atan(1.0)*4)#define enter puts("")#define MaxN 0x3f3f3f3f#define MinN 0xc0c0c0c0#define pb push_back#define bug(x) cerr<<#x<<'='<<x<<' '#define A原创 2021-11-05 00:33:03 · 114 阅读 · 0 评论 -
计算几何学习&坑点
咸鱼博主(计算几何萌新,随缘更新~tip 1:#define pi atan(1.0)*4使用define定义时注意程序只是在运行时将语句进行替代,若使用 a / pi ???返回值是 a / π\piπ * 16, 因为表达式完整版是a / pi →\rightarrow→ a / atan(1.0) * 4 而不是 a / (pi / atan(1.0) * 4)。所以正确的写法应该是#define pi (antan(1.0)*4)同理引申到多种define t原创 2021-10-26 23:45:24 · 137 阅读 · 2 评论 -
POJ 1981 Circle and Points(n3 & n2logn)解法与疑点解析
题目大意:给出平面上n个点求单位圆的最大覆盖点数朴素做法O(n3)n2枚举两个点+单位半径确定(2个)圆,任取其一方向构造唯一圆,由数学关系求出圆心坐标,最后枚举点到圆心距离是否大于1即可。代码如下:#include <iostream>#include <cmath>#include <algorithm>#include <cstring>#include <cstdio>#define In inline#define p原创 2021-10-24 17:52:17 · 253 阅读 · 0 评论 -
求平面中的最远点对问题
小结:平面中最远点对问题1.暴力枚举,复杂度O(n* n).2.稍加优化,先求得凸包,可以证明出最远距离点对一定处于凸包顶点处,复杂度O(m* m),最坏复杂度退化为O(n* n).3.旋转卡壳优化,复杂度O(n* logn).旋转卡壳做法:因为网上找了许多做法要么适用性不广,或是代码冗长,于是自己改良。首先得到凸包convexhull:法一:struct polygon{ int n; Point p[maxp]; Line l[maxp]; struct原创 2021-10-20 00:26:17 · 591 阅读 · 0 评论 -
二分法求凸多边形的外接圆最大半径
mark一个宝藏文章,个人认为简单易懂:添加链接描述附上博主代码:#include<cstdio>#include<cmath>const double PI=acos(-1.0);const double eps=1e-5;//比较精度//求圆心角之和double totalCornerAngles(double edges[],int n,double r){ double sum = 0.0; for(int i =0;i<n;i++)原创 2021-10-19 19:35:09 · 372 阅读 · 0 评论