_____计算几何_____
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【ZJOI2018】保镖(Voronoi图)(Delaunay三角剖分)(圆的反演)(三维凸包)(欧拉定理)
高阶计算几何知识+码农实现 O(n^2)不会单log 三维凸包或 单log 最远点Voronoi图,不然可以做到一个 log如果你会以上两种算法,请联系博主,万分感谢原创 2020-01-19 11:59:31 · 845 阅读 · 0 评论 -
【SGU383】Caravans(Delaunay三角剖分)(瓶颈路)
数据较强,可以用于模板查错原创 2020-01-17 17:01:44 · 395 阅读 · 0 评论 -
【SDOI2012】拯救小云公主(Voronoi图)(Delaunay三角剖分)
Delaunay三角剖分练习题原创 2020-01-17 10:06:51 · 256 阅读 · 0 评论 -
【BZOJ4219】跑得比谁都快(Voronoi图)(Delaunay三角剖分)
传送门D剖板子题,参考了这篇文章的讲解:here,以及darklove的实现:here确实是细节一大堆,很多地方能不能取等号要好好斟酌一下。太多了不想讲目前找得到的C++代码只有darklove的是严格O(nlogn)O(n\log n)O(nlogn),其他都是O(n2)O(n^2)O(n2)没有被卡。。。代码:#include<bits/stdc++.h>#def...原创 2020-01-17 08:44:22 · 342 阅读 · 1 评论 -
【WC2013】平面图(平面图转对偶图)(最小左转法)(扫描线点定位)(瓶颈路)
传送门题解:板子一大堆。首先容易发现我们要求的就是对偶图的瓶颈路。最小左转法转对偶图,询问离线,扫描线进行点定位,然后随便用你喜欢的方式求一下瓶颈路即可。代码:#include<bits/stdc++.h>#define ll long long#define re register#define db double#define cs constnames...原创 2020-01-10 17:14:43 · 384 阅读 · 0 评论 -
【ZJOI2008】Risk(最小左转法)(点定位)(扫描线)
传送门题解:显然要做的事情就是确定平面划分然后上一遍扫描线点定位。点定位的具体做法其实就是扫描线一下,找到自己上方第一条边,就能确定自己所在的平面了。如果本身平面图上的点是连通的可以直接上最小左转法,但是题目里面第二个图那种就会出事。解决方法是先搞出连通块,每个连通块最高的点用点定位的方法找到上方第一条线段,然后连到端点,这样不会破坏原来图的平面划分。然后上最小左转法。代码:#i...原创 2020-01-10 11:01:59 · 350 阅读 · 0 评论 -
【HNOI2016】矿区(平面图转对偶图)(最小左转法)
传送门题解:首先假设我们已经把对偶图搞出来了怎么做?随便搞一棵生成树,把外面的无界区域定位根,于是我们就可以把询问区域划分成若干连通块了,剩下的就随便做了。转对偶图的话需要确定每个封闭图形,把每条边拆成两个方向,然后最小左转法就行了。代码:#include<bits/stdc++.h>#define ll long long#define re register#...原创 2020-01-09 16:19:00 · 310 阅读 · 0 评论 -
【BZOJ2391】Cirno的忧郁(三角剖分)(平衡树维护极角序扫描线)
传送门题解:首先题目似乎没有说不存在三点共线的情况。。。于是,我随便找了5篇题解,全部可以被以下两组数据中的一组或两组hack。3 10 22 22 01 2 1231 2 333 2 13 10 22 22 01 1 1231 2 333 2 1先讲一下思路:考虑类似面积的处理,我们从原点向多边形顶点连线,将原多边形剖成若干三角形。计算面积...原创 2020-01-09 10:46:03 · 355 阅读 · 0 评论 -
【CodeChef NTHCIR】Rohith and Circles(线性递推)(圆的反演)
传送门题解:圆的反演做法比较明显,直接把 C1C_1C1 和 C2C_2C2 的交点作为反演点,那么 C1C_1C1 和 C2C_2C2 反演出来就是两条平行直线,把后面的圆一个个放进去就行了。不过也可以做得简单一点,利用笛卡尔定理:here。设 a1=−1/r1,ai=1/ria_1=-1/r_1,a_i=1/r_ia1=−1/r1,ai=1/ri,则 (a1+a2+a...原创 2020-01-08 17:25:25 · 320 阅读 · 0 评论 -
【HDU4773】Problem of Apollonius(圆的反演)
传送门题解:题意:给两个相离的圆和圆外一点 PPP,求所有过 PPP 且与两圆外切的圆。如果直接考虑列方程,只能列出两个方程,而且是平方和开根的形式,不好解。由于要求的圆要过一个定点,考虑反演。反演的定义请自行参见百度百科。反演是平面上点到点的一个映射,除反演中心外所有点形成一一对应,且该映射的逆映射就是其本身。反演有几个性质经过反演中心的直线反形就是其自身不经过反演中心的直...原创 2019-12-28 15:58:27 · 324 阅读 · 3 评论 -
【POJ2954】Triangle(Pick定理)
传送门题解:对于个点多边形,设ednodednodednod为它边上整点个数,innodinnodinnod为它内部整点个数,SSS为它的面积,则有 S=innod+ednod2−1S=innod+\frac{ednod}{2}-1S=innod+2ednod−1证明可以考虑归纳法,这里不扯了。求边界上的整点直接gcd算就行了。求内部整点就可以随便乱搞一下了。代码:#inclu...原创 2019-12-28 11:13:15 · 231 阅读 · 0 评论 -
【模板】旋转卡壳
参考题目:POJ2187解析:总觉得写得太水对不起别人,那等哪天想清楚了再写吧。。。旋转卡壳核心代码其实很少的,就是PolygonPolygonPolygon类中的diadiadia,这只是求直径的一个模板。旋转卡壳还有很多其他玄妙的用途,会在以后更新的。代码:#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;cc...原创 2018-09-30 23:36:02 · 155 阅读 · 0 评论 -
2018.10.01【POJ2318】TOYS(二分查找)(叉积性质)
传送门解析:由于隔板输入是按照从左到右的顺序,所以我们可以每次二分查找这个物品落在那个隔板的区间。而问题就在于怎么二分查找。思路:这是计算几何中,最经典的叉积的应用。关于叉积导面积的证明,请自行寻找资料,这里不再赘述,但提供几个方向。1.三角形行列式面积公式。2.投影。那么这里我们每二分一条线段,计算其两个端点与询问的点围成的三角形的有向面积。从而判断三角形在哪个方向。代码:...原创 2018-10-01 00:17:41 · 120 阅读 · 0 评论 -
2018.09.27【Codeforces1045F】Shady Lady(凸包)
传送门解析:在DZYO的带领下做了这道题,期间一直被dissdissdiss,最后几乎是照着代码抄了一遍才过。。。这道题不知道有没有人看完题去打个了FFTFFTFFT,反正我不会FFTFFTFFT。思路:这道题真的难以想象是凸包。我们先回到原问题,大意就是给你一个nnn项式,每项都有两个变量x,yx,yx,y,给出的数据表示这一项x,yx,yx,y各自的次数。一个叫BornaBor...原创 2018-09-27 15:53:37 · 257 阅读 · 0 评论 -
2018.10.15【ZOJ1081】Points Within(射线法)
传送门解析:射线法裸题,其实也可以用角度判别法过去。思路:判断一个点是否在多边形内部,我们从这个点向任意方向随便引一条射线,如果这条射线与多边形的交点有奇数个,那么这个点就是在多边形内部的。简单口胡 证明:考虑一条直线穿过一个多边形,它一定与多边形有偶数个交点,那么我们从第一个交点向后走,显然这段是在多边形内部的,然后经过一个交点后我们会在这个多边形外部。因为多边形的边就是他内部和...原创 2018-10-15 13:11:24 · 517 阅读 · 2 评论 -
2018.10.15【POJ3907】Build Your Home(多边形面积)
传送门解析:这道题怎么这么扯啊,数据范围都不给 (据说开10000的数组能过)裸的多边形求面积。思路:把原来的多边形面积看成由一个个小三角形的有向面积组成。直接求出所有小三角形的有向面积之和取绝对值就行了啊。代码:#include<iostream>#include<cstdio>#include<cctype>#include<...原创 2018-10-15 15:43:19 · 133 阅读 · 0 评论 -
【模板】Graham凸包扫描法
参考题目:洛谷P2742解析:板子就是我这个博客上万年不填的坑啊。更新JarrisJarrisJarris步进法。代码:#include&amp;amp;lt;bits/stdc++.h&amp;amp;gt;using namespace std;#define ll long long#define re register#define gc getchar#define pc putchar...原创 2018-09-30 19:50:49 · 207 阅读 · 1 评论 -
2018.10.15【JSOI2004】【洛谷P1337】平衡点 / 吊打XXX(向量和)
传送门解析:一道和物理结合起来的问题。思路:首先假设绳结在原点处,那么绳结会被拉动,向某个方向改变位置。而这个方向就是合力的方向。所以一开始我们直接计算出从当前位置受合力方向,这就是我们的移动方向。而移动多少?采用逼近的方法,初始化一个较大的步长,每次直接向方向移动步长的距离,一旦发现移动方向改变,说明拉过头了,换一个小步长继续(我采用的方法是每次把步长减小1/21/21/2)。...原创 2018-10-16 20:09:33 · 160 阅读 · 0 评论 -
2019.02.22【HNOI2011】【BZOJ2338】【洛谷P3217】数矩形(暴力)(旋转卡壳(?))
BZOJ传送门洛谷传送门解析:考虑什么样的点可能组成矩形,边已经行不通了,限制不够。矩形的对角线等长且共中点。所以将所有n2n^2n2条对角线提出来自定义排个序就行了。然后暴力枚举所有合法的对角线对,可以证明,这样没有多余的枚举且每个矩形都枚举了,复杂度为为O(矩形个数)=O(n2n)O(矩形个数)=O(n^2\sqrt n)O(矩形个数)=O(n2n),而且这样的数据极难构造,证...原创 2019-02-22 16:02:27 · 184 阅读 · 0 评论 -
【模板】Jarris步进法求凸包
参考题目:洛谷P2742解析:板子就是我这个博客上万年不填的坑啊。GrahamGrahamGraham扫描法。代码:#include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;#define ll long long#define re register#define gc getchar#define pc putchar#defi...原创 2018-09-30 20:30:36 · 345 阅读 · 0 评论