计算几何
#
夕林山寸
这个作者很懒,什么都没留下…
展开
-
2020牛客暑期多校训练营(第二场) B Boundary 计算几何,三点确定圆心
暴力做法就是枚举两个点,再枚举其他点是否在这个圆上。但n=2000.我们可以考虑n^2的做法:枚举两个点,确定一个圆心:然后存下来每个圆心出现的次数。加入一个圆上有n个点,则圆心出现次数为:n*(n-1)/2.最后找圆心出现次数最多的圆心,再求n即可。另外:圆上三点确定圆心可以用圆的曲线方程求解,现场求太浪费时间,直接记结论就行:#include <bits/stdc++.h>using namespace std;typedef long long原创 2020-08-25 11:50:27 · 198 阅读 · 0 评论 -
ICPC 2019-2020 North-Western Russia Regional Contest I. Ideal Pyramid 几何思维题
首先四棱锥的朝向是固定的,设最终四棱锥的左边/右边在x轴左边l,r。前边和后边在y轴坐标为d,u如下图,中心点坐标为 :( (l+r)/2,(u+d)/2 )所以对于一个点(x,y,h)。最终四棱锥的l最大为x-h,r最小为x+h,u最小为y+h,d最大为y-h。(拿l来说:如果最终四棱锥的l比x-h还大,那么点(x,y)处的高度就会小于h,可以在纸上画画想想立体空间)所以问题转化为了,若干矩形,求一个最小矩形把它们包括在内。然后遍历搞一搞就行#include <...原创 2020-05-24 21:32:51 · 272 阅读 · 0 评论 -
UCF Local Programming Contest 2018 J. Circle Meets Square 计算几何
几何题,判断正方形与圆是否相交、相接触一个点、相离相交:a:正方形四个点在圆内(不在圆上)b:圆的五点在正方形内(不在正方形边上)(五点是指圆心加上圆的最上下左右四个点,还有正方形四个点都在圆上的情况,这时候要用圆心判断)相接触:就是上面a,b,中的不在圆上不在正方形边上的条件去掉。相离:其余就是相离的情况#include <bits/stdc++.h>...原创 2020-03-26 16:33:05 · 282 阅读 · 0 评论 -
Benelux Algorithm Programming Contest 2019 K. Keep Him Inside 高中数学题
以上,是为什么这题可以ON扫描的证明。只要P在我们枚举的三角形内部,就一定能找到a,b,c满足题意的解。然后就是解二元一次方程就行。#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#de...原创 2020-03-24 21:32:19 · 216 阅读 · 0 评论 -
codeforces gym 101623 G - Glyph Recognition
枚举多边形,用每个点确定多边形的r。然后取最大和最小,然后用r^2比值即面积之比。具体求r:可以把每个点用极坐标表示,利用旋转对称把点等价到多边形正半轴逆时针第一个边上。然后就可以用高中几何知识解决了。#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o&...原创 2020-03-23 10:59:06 · 155 阅读 · 0 评论 -
CTU Open Contest 2019 J. Beer Vision
问:移动向量的个数。使得一部分点集可以同时加上移动向量,得到新的点集(与给出的点集完全重合)我们这样想:每个点要么是移动前的点,要么是移动后的点。所以每个点要么+divf(移动向量)的点存在,要么-divf后的点存在。问题转化为了判断这个条件。判这个条件复杂度nlogn然后我们枚举第一个点与其他所有点组成的移动向量(1号节点要么移动前的点,要么移动后的点,所以方向向量最多有...原创 2020-02-22 19:23:33 · 1595 阅读 · 0 评论