![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM_计算几何
文章平均质量分 62
总结:凸包,二维,三维等,全是板子。
I_have_a_world
这个作者很懒,什么都没留下…
展开
-
旋转卡壳&凸包(不用一下子就学完所有)
目录前言参考博客前置知识1.极角排序2.凸包(默认逆时针)3.对踵点旋转卡壳能解决的各类问题1.计算距离1.1凸多边形直径1.2凸多边形宽1.3凸多边形间最大距离1.4凸多边形间最小距离2.外接矩形2.1最小面积外接矩形2.2最小周长外接矩形3.三角剖分3.1洋葱三角剖分3.2螺旋三角剖分3.3四边形剖分4.凸多边形属性4.1合并凸包4.2找公切线4.3凸多边形交4.4临界切线4.5凸多边形矢量和5.最薄截面5.1最薄横截带前言1.不用总想着一下子就学完所有知识,刷题要紧(能遇到的东西才是重点!!!)原创 2021-07-11 16:31:06 · 1188 阅读 · 0 评论 -
2021-07-13-P3187 [HNOI2007]最小矩形覆盖(凸包,旋转卡壳,凸包最小矩形覆盖--求面积及各点)
传送门题意:给定一些点的坐标,要求求能够覆盖所有点的最小面积的矩形,输出所求矩形的面积和四个顶点坐标。3≤n≤500003\le n\le 500003≤n≤50000输入n及n个点输出面积及四个点坐标(按一定顺序,不用纠结)题解:先求凸包,然后再旋转卡壳旋转卡壳具体操作:枚举点,然后卡三个点(怎么卡?建议自己推)收获:除了熟悉了凸包和旋转卡壳之外,还学到了很多有用的新操作,比如点到直线的距离,点到直线的投影,过一点的平行线 以及线的倾斜角,atan ,atan2等。学的新东原创 2021-07-13 14:04:59 · 11641 阅读 · 0 评论 -
计算几何学习随笔
一、模板(kuangbin):https://vjudge.net/problem/HDU-3982circle::convex(Line u,polygon &po)//切割凸多边形左侧,注意直线方向自己分析了以下·前提条件,凸多边形也是逆时针方向的!!!1.切割左边(逆时针)就直线为向上方向,否则为向下方向(看y即可)。如果y相等,那就逆时针向右,顺时针向左。***自己画图,很简单的。(e-s)^(p[i]-x)>0即为逆时针。(因为叉积^为正才能满足逆时针切割)原创 2021-03-17 14:06:31 · 75 阅读 · 0 评论 -
2021-07-10-计算几何总结
说明1.以基础知识为主,尽量少用或不用模板。ps:其实挺简单的。2.基础知识判断两线段的关系:相交,不相交,重合原创 2021-07-10 12:10:13 · 759 阅读 · 0 评论 -
(2021-07-14~)“kuangbin带你飞”专题计划——专题十三:基础计算几何
前言参考博客自己总结的东西:2021-07-10-计算几何总结旋转卡壳&凸包(不用一下子就学完所有)难度判断?[kuangbin带你飞]专题十三 基础计算几何原创 2021-07-14 11:20:25 · 258 阅读 · 0 评论 -
luogu P3829 [SHOI2012]信用卡凸包(凸包模板,计算几何)
题目链接:https://www.luogu.com.cn/problem/P3829题意:有n个信用卡摆放在二维平面上。给定a,b,r分别表示其竖直长度,横向长度,四角圆弧的半径。以及这n个信用卡的中心点坐标(x,y)以及倾斜弧度sita。题解:既然是凸包模板题,那么就一定需要先找到凸包要包含的所有点,那么就比较容易想到先不考虑弧度而是将所有弧度圆心作为包含点。然后每输入一张信用卡的信息就记录相应的四个点就好了。然后就是用andrew求凸包各点再求周长。最后还需要加上每个点所对应的角所贡献的弧原创 2020-11-07 22:03:42 · 128 阅读 · 0 评论 -
P4586 [FJOI2015]最小覆盖双圆问题 (最小圆覆盖+超级计算几何)
最小双圆覆盖问题问题描述:给定n<=10000个点,找出两个半径相同的圆覆盖掉所有点,求出最小半径。题解:参考超级大佬定一思想:确定一个变量,答案确定使,肯定有一条线能将点分割成两部分,使一部分只在R1内,另一部分只在R2内。然后就转变成确定分割线,找两边最小覆盖圆的半径的最大值,就是答案。问题:怎么确定--二分分割线;分割线不平行于y轴--枚举旋转所有点。代码:#include <bits/stdc++.h>#define ll long long#de翻译 2021-03-13 15:43:03 · 260 阅读 · 0 评论 -
Grandpa‘s Estate POJ - 1228(凸包+稳定凸包+坑点)
总结&收获这是柴老板给我们的题,翻译过来之后真的很容易理解错[捂脸],补提尽量看原题。(有时候真的是翻译的坑,百密总有一疏)。题目传送门题意:给定一些凸包上的点(点都在某个凸包上),问凸包是否唯一。题解:唯一,当且仅当凸包的每条边上都给了三个点即以上。(两个点的话,可能直接相连,也可能不直接相连,就不能确定)。代码:#include <algorithm>#include <cmath>#include <cstdio>#includ原创 2021-07-26 21:44:39 · 103 阅读 · 0 评论 -
cf-gym103176 D. Drawing Circles(计算几何&精度&数学&优先队列)
题意(可以直接看代码部分,有题意翻译,os:有点简略)代码&题解啥的/*题目链接:https://codeforces.com/gym/103176/problem/D题意:最开始给两个大圆,按条件依次添加n<=3e5个圆,求每个圆的半径。 条件: 1. 所有圆(包括两个大圆)都必须与x轴相切。 2. 每次添加的圆(自然,除了两个大圆)都必须与之前的某两个圆相切而且所有圆都没有重合部分。 3. 每次添加所有满足条件的圆中半径最原创 2021-09-23 13:15:53 · 183 阅读 · 0 评论 -
2021-07-14-Bridge Across Islands POJ - 3608(旋转卡壳+凸多边形间最短距离)
传送门题意:给定两个顶点数分别为 N, M 的凸多边形 A, B,保证 A, B 不相交。求它们的最短距离,即求 mindist(u,v)∣u∈A,v∈Bmin{ dist( u, v ) } | u∈A, v∈Bmindist(u,v)∣u∈A,v∈B。3≤N,M≤100003 ≤ N, M ≤ 100003≤N,M≤10000两个多边形均按顺或者逆时针输入多组输入,每行输出一个数字表示最小距离(保留五位小数)题解:旋转卡壳的核心问题:怎么卡?其实我也每太看懂,先记住吧代码:原创 2021-07-14 09:44:05 · 203 阅读 · 0 评论 -
cf 1163C2. Power Transmission (Hard Edition)(几何,给定1e3个点求两条线相交的组数)
题目链接:https://codeforces.ml/contest/1163/problem/C2题意:n表示给定点的个数,xi,yi为坐标。在一条线上的点只需要用一条线相连。题解:1.k用pair<int,int>存储最简分式(就不用考虑精度问题了)。2.map<pii,ll> mp;将斜率映射成id(下标)。3.存储每条线,只需要k和d。st1[mp[{kx,ky}].insert({dx,dy});//表示一条线。4.该题求解:先预处理(第原创 2020-10-29 23:16:12 · 81 阅读 · 0 评论 -
2021-ICPD昆明站-I Mr. Main and Windmills
传送门题意:给定一个起点坐标s一个终点坐标t,然后给定n(1~1000)个点的坐标,这些点都在s-t的一侧(而且不会在s-t上)。一个点旋转一次,比如最开始a在b的视角左边,后来变成了不是右边(这里默认包含在一条视线上)。官方图:然后有m次查询,每次查询编号为h的点旋转k次的时候点ans的坐标(ans从s到t滑行)。题解:1)以原始点为基础,记录该点“贡献”(比如pi-pj与s-t相交于点a,那么g[i].push_back(a),g[j].push_back(a))过的所有与s原创 2021-04-06 19:47:47 · 234 阅读 · 0 评论 -
最小圆覆盖模板类
算法:随机增量法、最小圆覆盖、单点确定一个最小圆随机增量法简介:略,见:oi-wiki最小圆覆盖:在平面上有n个点,求一个半径最小的圆,能覆盖所有的点。算法:假设圆o是前i-1个点的最小覆盖圆,那么在加入一个点i,如果在圆上或圆内不考虑,否则新得到的最小覆盖圆一定经过第i个点。以p[1]为基础一直加j点。因为三点确定一个圆,所以循环三次。时间复杂度:O(n)解决问题:洛谷1742:最小圆覆盖模板:#include <bits/stdc++.h>.翻译 2021-03-13 15:47:44 · 126 阅读 · 0 评论