计算几何
青烟绕指柔!
我不怕千万人阻挡,只怕自己投降。
展开
-
51Nod - 3149
根据皮克定理:多边形面积 = 内部整点数 + 边上整点数 / 2 - 1直接算出面积和边上整点数即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;int x[6],y[6];signed main(){ while(1){ int ok=0; for(int i=1;原创 2020-09-01 20:32:39 · 187 阅读 · 0 评论 -
HDU - 4386
题目链接:HDU - 4386婆罗摩笈多公式:我们可以发现,当后面 cos = 0 时为最值。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;double a[10],p; int ts;void solve(){ for(int i=1;i<=4;i++) cin>原创 2020-08-31 19:24:27 · 172 阅读 · 0 评论 -
Craters
题目链接:Craters以前的凸包做法似乎被卡精度了,很神奇,然后换了种写法。对于一个圆,我们首先先将半径增加10,那么就相当于是把这些圆全部包围的最小长度。我们把圆等分成5000个点,那么精度损失是很小的,直接求出凸包,然后求面积即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/...原创 2020-04-29 16:29:29 · 202 阅读 · 0 评论 -
Rabbit的蛋糕
题目链接:Rabbit的蛋糕维护一下叉积的前缀和即可。然后算一算多出来的一部分面积即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=1e5+10...原创 2020-04-16 11:28:53 · 143 阅读 · 0 评论 -
BZOJ - 1857
题目链接:BZOJ - 1857显然最优解一定是从点a到传送带1的某一点,然后这个点到传送带2某一点,然后到点d。显然距离具有三分性。所以三分套三分解出两个点即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long long...原创 2020-02-13 14:49:21 · 204 阅读 · 0 评论 -
HDU - 5533
题目链接:HDU - 5533平面整点的正多边形只可能有正四边形,也就是正方形。所以就变成判断四个点是否形成正方形。判定方法是求出每两个点之间的距离的平方。是否比例是1:1:1:1:2:2。因为这个是在平面图上,不会有立体图形的干扰,所以这个判定条件就是充要的。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#in...原创 2020-02-08 20:48:16 · 234 阅读 · 0 评论 -
Codeforces - Barcelonian Distance
题目链接:Codeforces - Barcelonian Distance我们可以发现,如果我们可以通过走直线更短,那么这条直线一定穿过 A,B两点围成的矩形。所以我们可以求出和矩形的交点,然后取最小值即可。这道题我们要防止科学计数法,不精确,所以我们可以用:cout.setf(ios_base::fixed,ios_base::floatfield);AC代码:#pragma ...原创 2020-02-02 19:19:40 · 255 阅读 · 0 评论 -
Codeforces - D. Nature Reserve
题目链接:Codeforces - D. Nature Reserve首先肯定二分半径。然后我们可以发现,半径确定之后,圆心肯定在一条直线上面。然后我们可以发现对于每个点,都能找到满足覆盖这个点的区间,问题就转化为判断区间是否有交集。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/std...原创 2020-01-26 20:21:22 · 322 阅读 · 0 评论 -
三角剖分 与 泰森多边形
泰森多边形: 大概就是一个平面划分,平面上的每个点划分到离它最近的关键点上。Delaunay三角剖分和泰森多边形是对偶图。Delaunay三角剖分:定理:对于任何一种三角剖分,三角形个数和外围凸包点数之和为2n-2。Delaunay三角剖分的性质1.平面上的点集有且仅有唯一的Delaunay三角剖分(除出现四点共圆的情况,这时泰森多边形有顶点属于四个区域)。2.任意一个Delauna...原创 2019-12-04 13:39:19 · 551 阅读 · 1 评论 -
自适应Simpson
Simpson是什么呢?就是如果我们要求一个积分,但是里面的f(x)十分麻烦,于是我们就需要用Simpson的抛物线来近似最后的答案。加一个自适应就是适应精度,当精度很小的时候,就直接返回。Simpson公式:例题:Simpson例题AC代码:#pragma GCC optimize(2)#include<bits/stdc++.h>//#define int lo...原创 2019-12-04 13:08:53 · 316 阅读 · 2 评论 -
多边形重心
例题:hdu 1115给出一堆点,求多边形的重心。我们可以把多边形划分为许多三角形。三角形的重心很简单:x = ( x1 + x2 + x3 ) / 3 , y = ( y1 + y2 + y3 ) / 3多边形的重心公式为:借用大佬博客的图片:https://blog.csdn.net/u010499449/article/details/38168677公式当中的行列式,其实...原创 2019-12-04 12:26:39 · 627 阅读 · 0 评论 -
旋转卡壳
例题:POJ 2187旋转卡壳一般用来求平面中最远的两点的距离。我们很明显的可以发现,最远的两个点必然在凸包上,于是我们求出凸包之后,扫对踵点。利用凸包上的点依次与对应边产生的距离成单峰函数,面积上升到最高点后,又会下降。(具体证明可以从凸包定义入手 用反证法解决)然后就可以O(n) 得到最远的距离了,但是求Graham求凸包是 O(n*logn) 的。AC代码:#include&...原创 2019-12-03 20:49:25 · 165 阅读 · 0 评论 -
二维凸包
题目描述农夫约翰想要建造一个围栏用来围住他的奶牛,可是他资金匮乏。他建造的围栏必须包括他的奶牛喜欢吃草的所有地点。对于给出的这些地点的坐标,计算最短的能够围住这些点的围栏的长度。输入格式输入数据的第一行包括一个整数 N。N(0 <= N <= 10,000)表示农夫约翰想要围住的放牧点的数目。接下来 N 行,每行由两个实数组成,Xi 和 Yi,对应平面上的放牧点坐标(-1,000...原创 2019-12-03 19:42:34 · 170 阅读 · 0 评论 -
最小圆覆盖
题目描述给出N个点,让你画一个最小的包含所有点的圆。输入格式先给出点的个数N,2<=N<=100000,再给出坐标Xi,Yi.(-10000.0<=xi,yi<=10000.0)输出格式输出圆的半径,及圆心的坐标,保留10位小数输入输出样例输入 #1复制68.0 9.04.0 7.51.0 2.05.1 8.79.0 2.04.5 1.0输出 ...原创 2019-12-03 12:56:56 · 430 阅读 · 0 评论 -
poj 2069 最小球覆盖
DescriptionDuring a voyage of the starship Hakodate-maru (see Problem 1406), researchers found strange synchronized movements of stars. Having heard these observations, Dr. Extreme proposed a theory ...原创 2019-12-03 12:20:11 · 308 阅读 · 1 评论 -
计算几何--线段相交
swust oj 680Jack Straws1000(ms) 65535(kb) 450 / 1259n the game of Jack Straws, a number of plastic or wooden “straws” are dumped on the table and players try to remove them one-by-one without distu...原创 2019-05-13 13:07:09 · 553 阅读 · 5 评论