![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算几何
文章平均质量分 56
Jozky86
这个作者很懒,什么都没留下…
展开
-
CCPC秦皇岛gym102361A. Angle Beats
CCPC秦皇岛gym102361A. Angle Beats题意:给你n个点的坐标,现在有q次询问,每次询问给你一个坐标,问这个坐标可以与给定的n个点组成多少个不同的直角三角形n<=2000,q<=2000题解:正解貌似是用极角排序后尺取得到答案,但我看很多人有更简便的方法对于每次询问,我们可以分别考虑被询问点是直角点还是非直角点如果是直角点,我们可以先将n个点与被询问点的斜率存下来,然后再循环n个点,看有多少个点是可以构成直线(即斜率乘积为-1)如果是非直角点,我们可以直接n2原创 2021-11-04 17:38:41 · 187 阅读 · 0 评论 -
L - Two Ants Gym - 102823L
L - Two Ants Gym - 102823L题意:有两个线段A,B,两个线段不会超过一个公共点,你站在线段B上,整个平面你看不到的区域的面积(如图中S所在区域)题解:计算几何,恶心题。调了一个小时还是不对,吐了基本思路:很明显S所在区域是一个三角形,其中两点是线段w的两端,那我们求出第三个点即可基本思路是正确的,但是本题要处理的细节很多:如图,此时面积为inf如图,此时面积为inf如图,此时面积为0.00如图,此时情况为inf此时面积为红色区域情况非常多,总结下原创 2021-10-28 21:51:01 · 189 阅读 · 0 评论 -
计算几何专题
选自计算几何专题二维:一。点,线,面,形基本关系,点积叉积的理解POJ 2318POJ 2398POJ 3304POJ 1269POJ 1556POJ 2653POJ 1066POJ 1410POJ 1696POJ 3347POJ 2826POJ 1039POJ 3449POJ 1584POJ 2074二。凸包问题POJ 1113POJ 2007POJ 1873POJ 1228POJ 3348POJ 1259(最大空凸包,O(n^3))HDU 6219(最大原创 2021-09-21 14:40:04 · 100 阅读 · 0 评论 -
B Convex Polygon
B Convex Polygon题意:有n个点,每两个点组成一个坐标,现在问你是否所有的点可以构成一个凸多边形。并且这些点应该以顺时针方向输出。题解:很明显裸的凸包板子题,但是我们队里没人负责计算几何,当时抄的kuangbin板子,太啰嗦了,以后应该自己整理 ,然后又调了半小时也算是复习一下凸包了我们以为判断全了,结果忘了特判是不是所有点参与构成凸包,而错失八题代码:比赛代码:#include<bits/stdc++.h>using namespace std;const原创 2021-09-20 16:34:28 · 327 阅读 · 5 评论 -
H - Square Card HDU - 7063
H - Square Card HDU - 7063题意:有两个圆形区域,一个是得分区域,一个是获得奖金区域,现在你有一个边长为a的正方形,当正方形在如果在某一时刻它严格在圆形范围内,才算合法。问把牌扔到任意的位置被得分和同时获得奖金的可能性与被得分的可能性的比率是多少题解:我第一反应是想直接rand得结果,突然发现想多了,其实就是求两个圆相交面积再比得分区域面积就行。但是注意题目要求牌必须完全在园内,也就是圆心所在位置并不是整个圆,而是比圆小一圈的情况,所以需要求新的半径newr=sqrt(原创 2021-08-13 12:42:22 · 275 阅读 · 0 评论 -
计算几何模板中的代码
计算几何模板代码选自kuangbin7 计算几何7.1 二维几何// `计算几何模板`const double eps = 1e-8;const double inf = 1e20;const double pi = acos(-1.0);const int maxp = 1010;//`Compares a double to zero`int sgn(double x){ if(fabs(x) < eps)return 0; if(x < 0)return -1; e转载 2021-08-13 11:51:21 · 141 阅读 · 0 评论 -
Ball Dropping
Ball Dropping题意:求?的具体长度题解:算一算就出来了代码:#include<bits/stdc++.h>using namespace std;int main(){ double r,a,b,h; cin>>r>>a>>b>>h; if(2*r<=b&&2*r<=a){ printf("Drop"); } else {原创 2021-07-21 14:39:47 · 265 阅读 · 0 评论 -
Keiichi Tsuchiya the Drift King
Keiichi Tsuchiya the Drift King题意:给定一辆小车长宽分别为 b,a,轨道的圆弧部分半径为 r,圆弧对应的角度为 d,求出小车能通过轨道的最小轨道宽度 w。题解:我们考虑小车处于什么状态会使弯道最宽,就是小车和弯道相切并且切点和小车的一个角重合的时候,此时对应的角就是距离最远的位置,这种情况w可以通过勾股定理得到,w = sqrt((a+r)2 + b2 )但是还有另一种情况,我们设上面那个情况的角度为d,当角度小于d时,情况就不一样。如图,此时我们求出的w是斜边原创 2021-07-17 20:22:11 · 115 阅读 · 0 评论 -
K - Triangle 计蒜客 - 42405
K - Triangle 计蒜客 - 42405题意:给你一个三角形的三点,再给你三角形边上一个点,让你求另一个点(也要在三角形上),使得平分三角形的面积题解:计算几何三角形的三边ab,ac,bc如果点p在ab上,离a点更近的话,另一个点在bc上,反之在ac上,如果在bc上,就开始二分bc上的点,二分个1000来遍差不多就能得到另一个点计算几何要求熟练使用模板,整个代码基本上都是模板,就看你会不会用在计算几何这方面我还需要多练练代码:#include <cstdio>#in原创 2021-05-29 18:32:40 · 311 阅读 · 0 评论