计算几何
文章平均质量分 68
1
Gh0st_Lx
ACMer蒟蒻 / 北航研0
展开
-
P3217 [HNOI2011]数矩形
题目 给定若干个点,从这些点里面选取4个点构成一个矩形,使得矩形面积最大 原题链接:点这里 算法思路 思路 对于一个矩形,给定他的两条对角线一定长度相等,且有,中点相等 故我们可以通过枚举两个点,得到对角线,再排序过后,对相同的长度,相同中点的对角线处理 知道对角线的向量,即可求出矩形的面积 实现细节 本题为了避免出现浮点数,用LL代替double,我们把所有的中点都乘以2,这样就可以只用LL表示中点,避免了精度带来的误差 以及计算距离的时候,用平方来表示原来的数 该题的关键就是自定义排序,让相同原创 2021-08-18 11:05:00 · 101 阅读 · 0 评论 -
P3744 李彬的几何
题目 给定一个凸多边形,每个点最大可以移动的距离为ddd,让他变得不“凸”,求解最小d 算法思路 实际上,就是求解一个点到,他相邻两个点直线的距离的一半 点移动0.5h0.5h0.5h,直线移动0.5h0.5h0.5h,然后这样就是水平的了 做一个无穷小的偏移量,他就是凹的了 最后需要实现的就是点到直线的距离了 叉积/模长即可求得结果 代码实现 //#pragma GCC optimize("O3") #include <bits/stdc++.h> #include <unord原创 2021-08-18 09:25:52 · 90 阅读 · 0 评论 -
洛谷P6505 Run Away[计算几何][分治]
题目 原题链接:点这里 思路 将一个点扩成一个圆 二分圆的半径,如果当前圆能覆盖矩形的四个角,说明它能覆盖矩形 如果不能,则将矩形分割为四个小矩形,递归判断 递归边界l < eps && r < eps,这种情况可以把l,r看为一个点,就说明必然没有圆能覆盖到了,返回false 代码实现 #pragma GCC optimize("O3") #include <bits/stdc++.h> #include <unordered_map> #inclu原创 2021-08-17 22:04:54 · 105 阅读 · 0 评论 -
[NOI2005] 月下柠檬树 (自适应辛普森积分)
题目 原题链接:点这里 总体思路–>问题转化 先将原本的柠檬树分解成为多个圆台,再单独看圆台的投影 一个圆在地面的投影,是等比例的,而一条竖线的投影长度d=htanαd=\cfrac{h}{\tan \alpha}d=tanαh,这样也就得到了整棵树在平面上面的投影 问题转换为面积并,显然自适应辛普森积分套上去就行了 还有一个易错的点,就是函数F(x)F(x)F(x),每次找的时候都要O(n)O(n)O(n)找一遍最大值,因为大的影子可能会覆盖掉前后很多区间小的影子。 (PS:原创 2021-08-17 20:55:08 · 264 阅读 · 0 评论