计算几何
Master.Yi
学习他人,提升自己;
提升自己,帮助他人。
展开
-
UOJ#553【UNR #4】己酸集合【计算几何(圆内数点→半平面数点)】
题目描述Link二维平面 nnn 个点 (xi,yi)(x_i,y_i)(xi,yi),QQQ 次询问距离 (0,z)(0,z)(0,z) 小于等于 RRR 的点的数量。n≤12000,Q≤106,∣xi∣,∣yi∣,∣zi∣,R≤109n\le12000,Q\le10^6,|x_i|,|y_i|,|z_i|,R\le10^9n≤12000,Q≤106,∣xi∣,∣yi∣,∣zi∣,R≤109题目分析x2+(y−z)2≤R2x^2+(y-z)^2\le R^2x2+(y−z)2≤R2x原创 2020-08-13 20:03:52 · 570 阅读 · 0 评论 -
20200723 T3 图【平面图环内点数】(CF223E Planar Graph)
题目描述给一张连通平面图,每次询问给出一个环(由给出的点组成),问环内的点数n≤105,m≤3∗105,∑circle≤3∗105n\le10^5,m\le3*10^5,\sum circle\le3*10^5n≤105,m≤3∗105,∑circle≤3∗105题目分析写完代码受到精神污染的我直接截Freopen的图进入环的点 = 父边连到环上的在环外的点的子树大小出环的点个数 = 父边在环外的环上的点的子树大小当前后两条边的极角区间跨越Pi时,用全集减去补集会好算很多。写完之后看Sh原创 2020-07-23 19:41:51 · 430 阅读 · 0 评论 -
20200722 T2 ACT4!无限回转!【辛普森积分】
题目描述nnn 个点的凸多边形,逆时针方向给出,在内部随机一个起点,随机一个方向,一直往这个方向走直到碰到某一条边。求每条边被碰到的概率。n≤1500,∣xi∣,∣yi∣≤104n\le 1500,|x_i|,|y_i|\le 10^4n≤1500,∣xi∣,∣yi∣≤104题目分析对于第 iii 条边,求它被碰到的概率。随机过程有两个,一个是坐标,一个是角度,考虑积分,最后除以 (面积∗2π*2\pi∗2π)直接按坐标积分 dx,dydx,dydx,dy,用 atanatanatan 求角原创 2020-07-22 18:50:25 · 243 阅读 · 0 评论 -
BZOJ4948: [Wf2017]Airport Construction【线穿多边形】
题目描述:逆时针方向给出一个简单多边形,问内部可放置的线段的最长长度,保证无两边共线。n≤200n\le200n≤200题目分析:首先略加思考可以感觉到线段一定过多边形的某两个顶点,但线段的端点不一定是顶点,如下图:而且线段所在直线可能被多边形截成了几部分:所以需要枚举两个点,求出这条线与多边形所有边的交点,然后按坐标排序,然后将在多边形内部的连续线段考虑进答案。检验线段是否在多...原创 2020-07-16 22:04:29 · 570 阅读 · 0 评论 -
闵可夫斯基和
这里是有图的讲解两个点集 A,BA,BA,B 的闵科夫斯基和为 C={a+b ∣ a∈A,b∈B}C=\{a+b~|~a\in A,b\in B\}C={a+b ∣ a∈A,b∈B}两个凸包的闵科夫斯基和是由两个凸包的边平移组成的凸包。初始点为两个凸包的左下角相加,然后第一个向量由两个凸包中极角小的边组成,依次移动两个凸包的边,比较极角,然后决定哪个先放。例题:LOJ#2549. 「JSOI2018」战争 讲解在上面博客里有。Code:#include&原创 2020-07-16 14:37:36 · 1048 阅读 · 0 评论 -
HDU5462 Manors【半平面交】
题目描述:HDU5462 Manorsnnn个人,每个人mmm个旗子坐标为 xi,j,yi,jx_{i,j},y_{i,j}xi,j,yi,j,fi(x,y)=∑j=1m(x−xi,j)2+(y−yi,j)2f_i(x,y)=\sum_{j=1}^m(x-x_{i,j})^2+(y-y_{i,j})^2fi(x,y)=∑j=1m(x−xi,j)2+(y−yi,j)2点(x,y)(x,y)(x,y)被fi(x,y)f_i(x,y)fi(x,y)最小的 iii 占领,x,yx,yx,y的范围原创 2020-06-16 21:00:56 · 188 阅读 · 0 评论 -
20200603 hz T3 安排【分数规划,差分→线性约束→半平面交】
题目分析:把题目要求的转化一下,首先二分答案 Z=minx>1dxd1Z=\frac {\min_{x>1} d_x}{d_1}Z=d1minx>1dx,那么就是判断是否存在一组 xix_ixi 满足(mini=1m−1∑j=1n(Ai,j−Z∗Bj)∗xj)≥0,∀xi≥0,∃xi>0\left(\min_{i=1}^{m-1} \sum_{j=1}^n(A_{i,j}-Z*B_j)*x_j\right)\ge 0,\forall x_i\ge 0,\exis...原创 2020-06-04 23:14:18 · 155 阅读 · 0 评论 -
20200409 T1 圆与凸多边形的交 圆锥与竖截面的交
题目描述:题目分析:先看底面,底面是圆与凸多边形的交,显然多边形拆成每条边处理。网上的做法一般是分类讨论边的两个端点在圆内还是圆外,分类讨论略繁杂,还要求直线和圆的交点,比如这一篇。实际上可以求出这条边与圆的交的长度,只需要求出边的单位向量,那么单位向量与其中一个端点的点积就是那一边交的长度,如图所示:如果dis>=rdis>=rdis>=r 那么加上扇形的面积。...原创 2020-04-10 13:03:42 · 168 阅读 · 0 评论 -
省选模拟赛20200131 T3 数星星【三角形二维数点】
题目描述:一个二维平面直角坐标系,其中有 N 颗星星(坐标为整点),你会有 M 个询问,询问以某个整 点为顶点的正三角形包含大于等于 K 个星星的最小非负整数边长为多少,如果无 法满足输出-1。对于一个 正三角形,如果给出的顶点为(X,Y),边长为 L(L>=0,当 L 为 0 的时候退化为一 个点),那么三个顶点坐标分别为(X,Y),(X+L/2,Y+L/2*sqrt(3)),(X+L...原创 2020-01-31 22:38:50 · 444 阅读 · 0 评论 -
BZOJ1209 最佳包裹【三维凸包表面积】
题目描述:RT,三维空间n个点,求凸包表面积。n<=100题目分析:模板题三维凸包学习每个面的逆时针叉积为法向量,判断可不可视只需要保证每个面(A[0],A[1],A[2])的法向量向外,然后用(P-A[0]) ⋅\cdot⋅ 法向量,如果点积大于0则说明可视。如果一条边的顺方向和逆方向可视情况不同则说明此边在边界上,与P形成一个新的面。对每个点扰动以避免四点共面。四点共面时需要...原创 2019-10-22 19:31:12 · 189 阅读 · 0 评论 -
[SDOI2018]物理实验【计算几何好(毒瘤)题】
题目描述:题目分析:比较好想的是把导轨和挡板经过坐标变换让导轨变成X轴(平移+旋转),然后就是一个投影问题。但是毒瘤的是要求的是挡板长度,所以不同的线段投到X轴上的单位长度的贡献是不一样的,斜率越大单位投影长度的挡板长度越大。把挡板的端点看做事件点,我们需要知道两个事件点之间的X轴距离以及这段距离单位长度的贡献。所以需要维护出到某个事件点后离X轴最近的(X轴上方和下方各一个)挡板的贡献...原创 2019-05-22 20:32:38 · 236 阅读 · 0 评论 -
BZOJ 2458: [BeiJing2011]最小三角形【分治】
题面:平面上有N个点,Xaviera想找出周长最小的三角形。为了减小问题的难度,这里的三角形也包括共线的三点。N<=200000题目分析:类似于平面最近点对。三角形是类似的。(以上摘自Quack大爷的PPT)Code:#include<cstdio>#include<cctype>#include<cmath>#inclu...原创 2019-04-03 20:00:58 · 1271 阅读 · 0 评论 -
BZOJ 3210: 花神的浇花集会【切比雪夫距离转曼哈顿距离】
题目传送门题目分析:说实话我非常的懵逼。。结合这些博客感性理解理解:欧几里得距离、曼哈顿距离和切比雪夫距离Freopen的博客然后放一张图。。感性理解一波吧。。转换后横纵坐标的和就相互独立了,分别取中位数即可。但是取到的可能不是整数点(就像上图中在一个小格中心的那种点),在邻域中找一找就好了。Code:#include<cstdio>#include<cc...原创 2019-04-03 22:18:32 · 159 阅读 · 0 评论 -
BZOJ 1027: [JSOI2007]合金【凸包+最小环】
题目传送门题目分析:首先合金只有前两维有用,因为若前两维相等,第三维一定相等。把每种合金看成一个点(x,y),那么它们组合出的合金一定在它们的连线上。一个合金凸包可以组合出凸包内部的任意一点。那么只需要找一个凸包把用户需要的点包起来。另外建一个图。若所有用户点都在合金u到合金v的连线的左边(如果共线需要在线段上),则从u向v连一条边。然后在新建的图中找最小环即可。连边时候的判断,...原创 2019-04-04 17:32:19 · 153 阅读 · 0 评论 -
BZOJ 1043: [HAOI2008]下落的圆盘【圆的弧度并】
题面:有n个圆盘从天而降,后面落下的可以盖住前面的。求最后形成的封闭区域的周长。看下面这副图, 所有的红色线条的总长度即为所求. N<=1000题目分析:思路很简短的一道圆题。。求相交弧度取个并集。然而。。做圆相交牢记一点: 判断两个圆是否是包含或者相离!!(没判的我WA到自闭。。)取并集的细节看一看代码,当前圆被覆盖的时候直接break。Code:#include&...原创 2019-04-04 18:30:11 · 156 阅读 · 0 评论 -
BZOJ 2178: 圆的面积并【辛普森积分】
题面:给定n个圆,求其面积并,n<=1000题目分析:直接辛普森积分上。。有一个优化,预先把被其它圆包含的圆滤去。(辛普森积分会求很多次一条线上的并,这个优化的效果很明显,从10000ms+ -> 2500ms)Code:#include<cstdio>#include<cmath>#include<algorithm>#defi...原创 2019-04-04 22:06:16 · 822 阅读 · 0 评论 -
BZOJ 1137: [POI2009]Wsp 岛屿【半平面交】
题面:Byteotia岛屿是一个凸多边形。城市全都在海岸上。按顺时针编号1到n。任意两个城市之间都有一条笔直的道路相连。道路相交处可以自由穿行。有一些道路被游击队控制了,不能走,但是可以经过这条道路与未被控制的道路的交点。问从城市1到n的最短距离。数据保证有解。题目分析:看到题的第一眼:最短路??一搜题解,半平面交,???然后再仔细看题面。。“凸多边形”,“顺时针编号”,“道路相交处可以...原创 2019-04-02 15:44:26 · 206 阅读 · 0 评论 -
BZOJ 1038: [ZJOI2008]瞭望塔【半平面交】
题目传送门题目分析:先把相邻两个点形成的线拿来做一个半平面交得到可行区域。显然是个下凸壳。如果在一条山的轮廓线的正上方上没有凸壳的顶点,那么在这条线上肯定是取两个端点之一最优。如果正上方有凸壳的顶点,那么有可能取顶点最优。所以只需要枚举所有的端点和顶点取最优解即可。(注意凸壳的顶点的横坐标可能小于a[1].x或大于a[n].x)Code:#include<cstdio>...原创 2019-04-02 19:03:18 · 246 阅读 · 0 评论 -
BZOJ 3007: 拯救小云公主 【二分答案+并查集】
题面:Boss的洞穴可以看成一个矩形,英雄在左下角(1,1),公主在右上角(row,line)。英雄为了避开boss,当然是离boss距离越远越好了,所以英雄决定找一条路径使到距离boss的最短距离最远。Ps:英雄走的方向是任意的。第一行,输入三个整数,n表示boss的数目,row,line表示矩形的大小;接下来n行,每行分别两个整数表示boss的位置坐标。题目分析:二分一波答案,然后...原创 2019-04-02 20:30:43 · 198 阅读 · 0 评论 -
BZOJ 1845: [Cqoi2005] 三角形面积并【扫描线+线段的并】
题面:给出n个三角形,求它们并的面积。n<=100题目分析:经典的扫描线问题。先求出所有线段交点的横坐标,与三角形的端点一起按横坐标排序。考虑每两个相邻的横坐标,中间夹的部分一定是若干个不相交的梯形(三角形)。根据梯形面积公式,可以想到以下方法:对于每一个区间,我们取中点,求出这条直线被所有三角形覆盖的长度,然后乘以区间宽度,就是这个区间内的面积。然后就是求直线被三角形覆盖的长...原创 2019-04-02 22:51:54 · 201 阅读 · 0 评论 -
计算几何初步模板
#include<cstdio>#include<cmath>#include<algorithm>#define maxn 1005using namespace std;const double eps = 1e-8, Pi = acos(-1), inf = 1e20;struct Point { double x,y; Point(do...原创 2019-02-14 19:33:48 · 189 阅读 · 0 评论