计算几何
while WA er
这个作者很懒,什么都没留下…
展开
-
【计算几何】P3217 [HNOI2011]数矩形
here 要在n个点中选中4个点求一个矩形的最大面积。 如果枚举点的话复杂度实在太高了,想法就是枚举边,一个矩形的对角线的边的中点是相等的,而且他们的长度也必定相等。 边的数量最多是n*n还是可以接受的 我们计算出来所有的边,然后首先根据距离排序然后根据中间点的位置排序,最后计算面积的时候要用叉积计算防止爆long long的情况发生。 kuangbin的板子还是看着不太习惯,这几天适应一下吧!下边是我自己写的不是他的板子。 ac code //god with me #include <bits/s原创 2021-09-14 19:15:14 · 100 阅读 · 0 评论 -
【计算几何】【三维凸包】【模板】三维凸包
here 落谷上水过得第一道黑题 还是个模板,发个博客庆祝庆祝 ac code #include <bits/stdc++.h> #define pb push_back #define ld long double using namespace std; const int eps = 1e-8; const int MAXN = 2005; int sgn(double x){ if(fabs(x) < eps)return 0; if(x < 0)return -1;原创 2021-09-13 12:06:58 · 216 阅读 · 0 评论 -
【计算几何】【凸包新板子】【模拟】[CERC2016]凸轮廓线 Convex Contour
here 根据输入的字母,在一行中横向放入几何图形,最后求一个凸包周长。要提到的是,这里的几何是有圆形的,并且用之前的凸包模板会存在一个点重合的问题。 这个不会有这样的问题,所以换了新的模板,注意使用就好啦! 这两天要花时间研究一下kuangbin的计算几何模板,至少我要知道该怎么用才可以。 ac code #include <bits/stdc++.h> #define pb push_back #define ld long double using namespace std; cons原创 2021-09-13 10:41:48 · 153 阅读 · 0 评论 -
【计算几何】【最小圆覆盖】P1742 最小圆覆盖
here 我最初的想法是凸包+旋转卡壳,当时是队友看了这道题,没有仔细看数据范围。 今天看了数据要小数后十位的精度,好了,凸包+旋转卡壳肯定是过不了了。 那么就要根据新的想法,有个推出结论的公式叫做三点定圆,这里就不细讲了。 附上一篇写的比较好的博客 here ac code //god with me #include <bits/stdc++.h> using namespace std; const int N=1e5+5; double dp[25][2005]; double wall原创 2021-09-12 17:48:13 · 94 阅读 · 0 评论 -
【计算几何】【最短路】【动态规划】房间最短路问题
here 他在x轴上的坐标只有20个这也就意味着我们可以暴力枚举。 他的精度是小数点后后两位,我们就直接把纵坐标直接乘上基数100这样就消除了精度的问题。 那么dp方程就很简单了 dp[i][j]=min(dp[i][j],dp[i−1][k]+dis(wall[i−1][0],k/100.0,wall[i][0],j/100.0));dp[i][j]=min(dp[i][j],dp[i-1][k]+dis(wall[i-1][0],k/100.0,wall[i][0],j/100.0));dp[i][j]原创 2021-09-12 17:02:54 · 152 阅读 · 0 评论 -
【计算几何】【凸包周长】【思维】城墙
here 主要是看边界的情况,因为他说最边上的距离不能超过L这就意味着拐角处外面的城墙应该是属于弧状的。 这样最后的结果就会是凸包周长加上2ΠL2ΠL2ΠL 套一下板子就好了。 ac code #include <bits/stdc++.h> #include <iostream> #include<algorithm> #include <cstdio> #include <cmath> #define re register int #defi原创 2021-09-12 16:59:05 · 128 阅读 · 0 评论 -
【计算几何】【DFS】矩形覆盖
定义好矩形,以及计算面积。 这里的矩形最多是四个这也就意味着我们可以暴力枚举每个点属于那个举行,然后再判断当前有没有矩形相交的情况,如果没有情况我们就进行下一步的枚举点 当我们枚举完了所有的点就可以直接求出矩形面积和更新一下ans就可以了。 这里的做法可以用深度优先搜索来做,反正复杂度也不是很高。 here ac code //god with me //#pragma GCC optimize(1) //#pragma GCC optimize(2) //#pragma GCC optimize(3,"O原创 2021-09-12 16:55:36 · 135 阅读 · 0 评论 -
P6247【计算几何】【凸包】【旋转卡壳】【最近最远点对】【分治】[SDOI2012]最近最远点对
here 一个nloglogn的求最近点对的分治算法,配一个标准的凸包旋转卡壳求最远距离的算法。 //god with me //#pragma GCC optimize(1) //#pragma GCC optimize(2) //#pragma GCC optimize(3,"Ofast","inline") //#include <bits/stdc++.h> #include <algorithm> #include <iostream> #include &l原创 2021-08-13 17:17:46 · 141 阅读 · 0 评论 -
P1429【计算几何】【平面最近点对】【分治法】平面最近点对(加强版)
here 分治法的思想很简单。就是用一条线把平面分成两半,分别求出两个区间内的最近点对然后合并就好。这样递归的下去做就好了。 在递归合并的过程中附带一个单独判断线周围的点的距离就可以了。 复杂度是n loglogn 主要是用到递归的排序的部分了。 如果排序换成桶排序就可以达到严格的nlogn级别的算法了。 //god with me //#pragma GCC optimize(1) //#pragma GCC optimize(2) //#pragma GCC optimize(3,"Ofast","i原创 2021-08-13 16:56:40 · 201 阅读 · 0 评论 -
P4196【计算几何】【半平面交】【多边形面积交】[CQOI2006]凸多边形 /【模板】半平面交
注意一下在用HPL的时候 要存的是线段,一开始我把第一个多边形的末尾一个点和第二个多边形的最初的点连了。我还以为是简化了代码 果断错 here 代码环节: //god with me //#pragma GCC optimize(1) //#pragma GCC optimize(2) //#pragma GCC optimize(3,"Ofast","inline") //#include <bits/stdc++.h> #include <algorithm> #include原创 2021-08-13 16:20:58 · 71 阅读 · 0 评论 -
poj3335【计算几何】【半平面交】【多边形内核】Rotating Scoreboard
一道签到题。 here 主要是注意一下这里的点是顺时针给出的我们需要借用一个reverse函数将点逆置。 然后我们就套用模板啦。 //god with me #pragma GCC optimize(1) #pragma GCC optimize(2) #pragma GCC optimize(3,"Ofast","inline") //#include <bits/stdc++.h> #include <algorithm> #include <iostream> #原创 2021-08-13 15:46:07 · 74 阅读 · 0 评论 -
poj【3130】【计算几何】【半平面交】【多边形的核】How I Mathematician Wonder What You Are!
here 题目大概就是给出了一个多边形,判断这个正多边形有没有核 核就是这个区域可以看见多边形的所有位置。 参考了博客:here以及here以及here都是一个人写的 哈哈哈哈哈 这个代码量,感人,真的是吐了。眼都花了 //god with me #pragma GCC optimize(1) #pragma GCC optimize(2) #pragma GCC optimize(3,"Ofast","inline") //#include <bits/stdc++.h> #include原创 2021-08-11 17:50:06 · 94 阅读 · 0 评论 -
P3194【计算几何】【半平面交】[HNOI2008]水平可见直线
here 很像半平面交的一道题。题目是给了一些直线,想要从y轴,也就是二维平面从上向下看可以看到哪些直线,下边的直线会被上边的直线所覆盖了。 做法就是判断斜率以及截距排序,然后用一个双端队列来记录直线。如果当前判断的直线与队列尾的一条直线的在x轴的位置比之前的两条直线更偏左一些。那么前面的直线就会被被覆盖点。直接pop出来就可以了。 最后代码环节: //god with me #pragma GCC optimize(1) #pragma GCC optimize(2) #pragma GCC optim原创 2021-08-11 16:35:07 · 77 阅读 · 0 评论 -
P2742【计算几何】【凸包周长double类型】[USACO5.1]圈奶牛Fencing the Cows /【模板】二维凸包
here 改了之前的模板,因为之前的模板我发现是int的读的时候。这里可以读入小数然后就出bug了 AC代码 #include <bits/stdc++.h> #include <iostream> #include<algorithm> #include <cstdio> #include <cmath> #define re register int #define int long long #define inf 0x3f using n原创 2021-08-07 10:49:21 · 118 阅读 · 0 评论 -
P1325【计算几何】雷达安装
here x轴下边是陆地,上边是海洋,给出来海洋中小道的坐标 问在海岸线上最少装多少个雷达可以完全覆盖小道。 贪心的思想将小岛在x轴左向右排序然后就,计算出来小道若被覆盖则海岸线上雷达可以在的线段。 将线段以线端最右端排序,然后如果后面的线段的开始是大于前面的线段的结束的那么他们就可以通过一个雷达完全覆盖。 最后用vis做一下标记数出来公共区间的个数就可以了。 // god with me //#pragma GCC optimize(1) //#pragma GCC optimize(2) //#pra原创 2021-08-07 10:35:05 · 246 阅读 · 0 评论 -
P1355【计算几何】神秘大三角
here 就是求一个点在三角形的边上还是在点上还是在内部或者外部。 一开始用叉积判断这个点个三条边的叉积之和是不是递增的,然后中间就不知道为什么被卡掉了一个案例。想了半天感觉思路也没有问题啊,可能是有一个点非常的接近线,他就可以让你计算的temp逼近于0当小于那个eps的时候就会存在一定的问题。 然后打了两个补丁过了题。总感觉不太对 最后改了代码是直接数叉积的正值数和负值数过的题 顺便提一句 scanf yyds // god with me //#pragma GCC optimize(1) //#pra原创 2021-08-07 09:17:57 · 178 阅读 · 0 评论 -
EOJ1019 【凸包】【旋转卡壳】【凸包直径】【模板】着弹力
题目入口 也是求最大距离就行了。但是不知道为什么用之前的模板就会出现超时问题??? 现在还不明白为什么会这样。。。。。 等我明白了回来写说明。 原版TL代码 #include <iostream> #include<algorithm> #include <cstdio> #include <cmath> #include <bits/stdc++.h> #define int long long #define re register int /原创 2021-07-29 16:15:49 · 160 阅读 · 0 评论