计算几何
文章平均质量分 56
tomjobs
别慌,慌也没用
展开
-
洛谷P1742 最小圆覆盖(Welzl’s算法,三点求圆心的证明)
题意:求覆盖平面nnn个点的最小半径圆。思路:Welzl’s算法:最直接的方法就是模拟退火,不过这里不用。这里用的是Welzl’s算法求最小覆盖圆,期望复杂度为O(n)O(n)O(n)。基于的结论是:只要得出了覆盖前iii个点的最小覆盖圆,那么第i+1i+1i+1个点如果在圆外,那么第i+1i+1i+1个点就应该在圆上,因此可以根据第i+1i+1i+1个点与圆的位置,迭代的更新圆上的三个点(或两个点)。对于最小覆盖球也有同样的结论,但是因为要枚举球上4个点,且3点有共面的情况,所以事先比较复杂原创 2021-03-12 09:48:12 · 847 阅读 · 1 评论 -
2021年度训练联盟热身训练赛第一场 A. Weird Flecks, But OK(最小圆覆盖,模拟退火)
题意:空间有nnn个点,求3种维度中的平面能画出一个圆覆盖所有点的最小直径。思路:实际就是在三个维度作最小圆覆盖。模拟退火可以解决最小球覆盖,三维改成二维就是最小圆覆盖了。不过最小圆覆盖是有Welzl算法的,待补。。。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;c原创 2021-03-10 23:47:29 · 212 阅读 · 0 评论 -
Codeforces 8D. Two Friends(三个圆是否有交集)
题意:a,b,ca,b,ca,b,c 3个点,A,B从a出发。A要先到c再到b,B要到b。A走的距离不能比最短距离大t1,B走的距离不能比最短距离大t2。求A,B能一起走的距离思路:问题转换为三圆求交集,代码参考自洛谷C3H5ClO大佬。#include<cstdio>#include<math.h>#include<algorithm>using namespace std;const double eps=6e-10;const int IN原创 2020-11-16 23:30:49 · 268 阅读 · 0 评论 -
2020ICPC·小米 网络选拔赛第一场 B Intelligent Robot(判断线段是否相交)
题意:k条直线,不能越过直线,从起点到终点最短距离是多少。思路:对每个直线上的点加上起点终点,如果两点的直线不与其他直线有交点,那么就建边。之后dij算出到每个点的最短距离即可。tips:两条直线AB,CD,要判断AB是否与CD相交,只需要判断A,B是否在CD两侧,且C,D是否在AB两侧。则有 ABAC与ABAD异号(向量叉乘),CDCA与CDCB异号。#pragma GCC optimize(2)#pragma GCC optimize(3,"Ofast","inline")#incl原创 2020-10-25 23:54:29 · 246 阅读 · 0 评论 -
G - It‘s High Noon ZOJ - 4000(计算几何,区间更新)
IT’S HIGH NOON!Mccree’s ultimate skill has cooled down! He can aim at arbitrary direction and shoot all the enemies in front of him in a range of 180 degrees (A half plane, the border of which passes through Mccree. The enemies on the border will also be原创 2020-10-20 21:04:47 · 198 阅读 · 0 评论 -
G - Glyph Recognition Gym - 101623G(计算几何+二分)
题意:弄两个多边形覆盖图中所有点,要求里面多边形面积比上外面多边形面积值最大。思路:枚举用的是哪个多边形,则比值最大时,外面那个多边形覆盖所有点,里面那个多边形一个点都没有覆盖。二分就好了。#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <iostream> using namespace std; const原创 2020-10-10 09:54:11 · 130 阅读 · 0 评论 -
2020杭电多校第三场 Triangle Collision(计算几何,坐标翻转,镜像对称)
题意:一个小球在一个等边三角形内碰撞,碰撞速度不比,方向沿边镜像翻折。求发送kkk次碰撞需要多少时间思路:一开始想着是模拟,然后估摸着最后会形成循环,经过起始点。但是太难模拟了。。看了题解发现,真的特别巧妙。反射意味着穿过!那么就成了全是等边三角形铺成的平面,已知起点和速度。求经过kkk条边的最短时间。这个时间可以二分。仅考虑平行x轴的边,那就直接用abs⌊yh⌋abs\lfloor \frac{y}{h} \rfloorabs⌊hy⌋即可(-0.5向下取整是-1,同样适用)。对于左右两条边原创 2020-07-29 14:50:10 · 367 阅读 · 0 评论 -
C. Operation Love(维护凸包/多边形面积判断顺时针逆时针) 2020牛客暑期多校训练营(第三场)
题意:一个手掌图形,可以旋转平移,但不会改变大小形状。求这个手掌是左手还是右手思路:sb了很久。其实判断是顺时针还是逆时针,然后看出现8,9还是出现9,8。一开始在想用凸包维护角度,看上面两个角度区间,但是不熟悉板子,所以没搞好。其实根据叉积性质,用求多边形面积方法,看正负就可以判断是顺时针还是逆时针。用面积正负代表顺时针逆时针#include <cstdio>#include <cstring>#include <algorithm>#include原创 2020-07-20 10:28:30 · 240 阅读 · 0 评论 -
B Boundary(计算几何) 2020牛客暑期多校训练营(第二场)
题意:求一个圆(保证经过原点),覆盖(点在圆周上)最多的点。求点数思路:3点求圆心,最后排序来算多少个圆心一样(因为一定经过原点,所以不需要确定半径)。但感觉还是数据水了,这样写还用了double很容易被卡精度。正解的意思是同弧所对圆心角相等,所以你固定一个点,再枚举其他点看多少个角度相等取最大值。但是这个过程不能出现下面的情况。只需要规定A只能出现在OP下方即可,也就是OP与OA叉积为负。#pragma GCC optimize(2)#include <cstdio>#i.原创 2020-07-14 13:09:47 · 282 阅读 · 1 评论 -
D - Drinking to turn red Gym - 102448D(计算几何,二分)
After the closing ceremony of an ICPC competition, Lucas and his friend decided to go to the hotel pool to have some magical drinks. After a while, Lucas found a magic swim ring and also realized that the swim rings had some interesting properties:The sw原创 2020-06-29 14:13:14 · 397 阅读 · 0 评论 -
ICPC Central Europe Regional Contest 2019 D. Deep800080(圆与直线的交点,点与直线的距离,直线与直线交点)
Ian, the owner of the boat called Deep800080 is going to make a barbecue on the lake thisevening. There is a narrow straight pier running from the shore into the lake. Ian thinks it willbe a good idea to make the barbecue somewhere on the pier.He wants to原创 2020-06-22 12:32:54 · 608 阅读 · 0 评论 -
K - Keeping the Dogs Apart GYM-101550(计算几何)
参考:https://blog.csdn.net/xbb224007/article/details/79846472题意:给出两只狗的路线,且其速度相同,求其运动时候的最短距离。思路:对于两个相同长度的向量,其距离按照时间为自变量构成一个二次函数。那么对于两只狗每次取相同长度的直线来计算距离,然后推下去。#include <cstdio>#include <cstring>#include <algorithm>#include <string.原创 2020-06-15 17:27:59 · 246 阅读 · 0 评论 -
F icebergs GYM102501(求凸包面积)
#include <cstdio>#include <cstring>#include <algorithm>#include <cmath> using namespace std; const double eps = 1e-8;struct point{ double x,y; point(){} point(double _x,double _y) { x = _x;y = _y; .原创 2020-06-14 13:48:13 · 359 阅读 · 0 评论 -
ICPC NEAU Programming Contest 2020 桌球 (计算几何)
思路:你可以求出白球要移动到哪个点,同时白球和红球分别在红线两边才可能进行移动。#include <cstdio>#include <cstring>#include <vector>#include <algorithm>#include <queue>#include <cmath>using namespace std;const int maxn = 4e5 + 7;const double PI =.原创 2020-06-11 23:32:46 · 318 阅读 · 0 评论 -
B - Mountainous landscape Gym - 100543B(线段树+计算几何)
题意: 给出n个点,求出每个点演当前角度看到的是第几条线段。思路:参考自:https://blog.csdn.net/ezoiHQM/article/details/82154368用线段树维护凸包,可以通过Graham扫描法维护这个凸包(对应add函数)。而向量是否与这个凸包相交可以二分维护,这个部分还没有弄懂。#include <cstdio>#include <algorithm>#include <cstring>#include <cma.原创 2020-05-11 19:38:04 · 310 阅读 · 0 评论 -
POJ 2991 Crane(计算几何+线段树)
DescriptionACM has bought a new crane (crane – jeřáb) . The crane consists of n segments of various lengths, connected by flexible joints. The end of the i-th segment is joined to the beginning of th...原创 2020-01-28 20:42:50 · 299 阅读 · 0 评论 -
Intersection HDU - 5120(圆相交面积)
Matt is a big fan of logo design. Recently he falls in love with logo made up by rings. The following figures are some famous examples you may know.A ring is a 2-D figure bounded by two circles shari...原创 2020-01-13 21:19:31 · 189 阅读 · 0 评论 -
A hole to catch a man UVA - 10060(求凸包/多边形面积)
How can a manhole be a hole if it is covered? Perhaps, to prove a manhole a hole, most of the manholesof Dhaka are uncovered. So now manhole means a hole to catch a man. Anyway, the new Mayor ofDhak...原创 2019-12-13 14:16:14 · 243 阅读 · 0 评论 -
EC-final2018 F - Interstellar … Fantasy Gym - 102056F(计算几何)
Unfortunately, the boy finally got bankrupt. Looking at his receding figure, Rikka understood more about the world — but she is still herself. Though, she still sat on the tower and spent time with th...原创 2019-12-12 15:45:12 · 452 阅读 · 0 评论 -
J - Janitor Troubles Gym - 102007J(四边求最大面积)
J Janitor TroublesWhile working a night shift at the university as a jani- tor, you absent-mindedly erase a blackboard covered with equations, only to realize afterwards that these were no ordinary e...原创 2019-10-07 00:35:11 · 299 阅读 · 0 评论