计算几何
文章平均质量分 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 · 238 阅读 · 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 · 211 阅读 · 0 评论 -
计算几何专题
选自计算几何专题 二维: 一。点,线,面,形基本关系,点积叉积的理解 POJ 2318 POJ 2398 POJ 3304 POJ 1269 POJ 1556 POJ 2653 POJ 1066 POJ 1410 POJ 1696 POJ 3347 POJ 2826 POJ 1039 POJ 3449 POJ 1584 POJ 2074 二。凸包问题 POJ 1113 POJ 2007 POJ 1873 POJ 1228 POJ 3348 POJ 1259(最大空凸包,O(n^3)) HDU 6219(最大原创 2021-09-21 14:40:04 · 148 阅读 · 0 评论 -
B Convex Polygon
B Convex Polygon 题意: 有n个点,每两个点组成一个坐标,现在问你是否所有的点可以构成一个凸多边形。并且这些点应该以顺时针方向输出。 题解: 很明显裸的凸包板子题,但是我们队里没人负责计算几何,当时抄的kuangbin板子,太啰嗦了,以后应该自己整理 ,然后又调了半小时 也算是复习一下凸包了 我们以为判断全了,结果忘了特判是不是所有点参与构成凸包,而错失八题 代码: 比赛代码: #include<bits/stdc++.h> using namespace std; const原创 2021-09-20 16:34:28 · 374 阅读 · 5 评论 -
H - Square Card HDU - 7063
H - Square Card HDU - 7063 题意: 有两个圆形区域,一个是得分区域,一个是获得奖金区域,现在你有一个边长为a的正方形,当正方形在如果在某一时刻它严格在圆形范围内,才算合法。 问把牌扔到任意的位置被得分和同时获得奖金的可能性与被得分的可能性的比率是多少 题解: 我第一反应是想直接rand得结果,突然发现想多了,其实就是求两个圆相交面积再比得分区域面积就行。但是注意题目要求牌必须完全在园内,也就是圆心所在位置并不是整个圆,而是比圆小一圈的情况,所以需要求新的半径 newr=sqrt(原创 2021-08-13 12:42:22 · 300 阅读 · 0 评论 -
计算几何模板中的代码
计算几何模板代码选自kuangbin 7 计算几何 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 · 187 阅读 · 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 · 287 阅读 · 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 · 124 阅读 · 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 · 342 阅读 · 0 评论
分享