首页 > TAG信息列表 > 凸包

计算几何 _ 凸包

代码 #include<bits/stdc++.h> #define int long long #define pdd pair<double ,double > using namespace std; const int N=1e5+10; const int mod=1000000007; int n; pdd q[N]; bool used[N]; int stk[N]; pdd operator-(pdd a,pdd b){ return {a.first-b.

[学习笔记]二维凸包

对于一个集合D,D中任意有限个点的凸组合的全体称为D的凸包。 比如下图中组成的图形就是一个凸包    可以发现,二维凸包就像一个橡皮圈把所有点包了起来 我们可以简单地定义:平面凸包为平面上覆盖 $n$ 个点的最小凸多边形  那么现在我们讨论求凸包的方法 1. 斜率逼近法 这个比较容

【模板】动态凸包

好诶,我luogu帮我成功的交了一回codeforces了 \(\textrm{CF70D - Professor's task}\) #include <stdio.h> #include <map> using namespace std; #define llt long long int map<int,int> up, dn; llt cross(int a,int b,int x,int y) { return (llt)a*y-(llt)

Codeforces Round #809 (Div. 2) C. Qpwoeirut And The City(枚举 / dp)

https://codeforces.com/contest/1706 一排n栋建筑,其中第I(1≤I≤n)栋楼高hi层。当且仅当建筑物I中的层数hi大于建筑物j中的层数hj时,建筑物I才比建筑物j高 如果建筑I高于建筑I-1和建筑i+1(并且两者都存在),则建筑I是凉爽的。注意1号楼和n号楼都不能凉。 为了改造这个城市,Qpwoeiru

题解[CF575E]Spectator_Riots

题意 一个球场,可以看作 \(10^5\times10^5\) 的矩形,每个位置都是一个整点。一个位置 \((x,y)\) 位于球场内当且仅当 \(x\in[0,10^5]\and y\in[0,10^5]\) 。 有 \(n\) 个可能捣乱的黑粉,第 \(i\) 个在位置 \((x_i,y_i)\) 上,速度为 \(v_i\),即一秒内可能跑到任意一个距原来位置曼哈顿距

【学习笔记】二维凸包

只会二维凸包,其他的都不会 概述 凸包是啥 凸包(Convex Hull)是一个计算几何(图形学)中的概念。 在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。X的凸包可以用X内所有点(X1,...Xn)的凸组合来构造。 在二维欧几里得空间中,凸包可想象为一条刚好包著所有点的橡

World Tour Finals 2019 D - Distinct Boxes 题解

太神了,专门写一篇题解 qwq 简要题意:给你 \(R\) 个红球和 \(B\) 个蓝球,你要把它们放到 \(K\) 个箱子里,要求没有两个箱子完全相同(即两种球个数就相同),求 \(K\) 的最大值。 设第 \(i\) 个箱子中有 \(x_i\) 个红球,\(y_i\) 个蓝球,就变成了找平面上一个大小最大的点集 \((x_i,y_i)\),使 \(

LGP3299口胡

假设 \([1,i]\) 这些僵尸的血量之和为 \(s_i\),那么第 \(n\) 关的答案就是 \(\max(\frac{s_1}{x_n},\max_{i=2}^{n}\frac{s_i}{x_n+(i-1)d})\) 对于第一个单独处理,后面的考虑怎么优化。 可以发现这相当于求某个斜率的最大值。于是我们直接二分这个斜率。 找到一个僵尸,令斜率为二分

wqs二分学习笔记

有一道简单的题,序列 \(a\) 有 \(n\) 元素,选正好 \(k\) 个元素和的最大值? 这道题可以用排序,但是这道题可以用来理解「二阶导」恒定的正负性。 用 \(g_k\) 表示选正好 \(k\) 个元素的最佳答案,把 \((k,g_k)\) 形成的点画在坐标系上,就能得到一个「上凸包」。 例如 \(a = [9,8,4,2,-9,-

凸包和网络流模板

凸包模板 这题是整数范围,需要时请改浮点数 #include<bits/stdc++.h> #define int long long using namespace std; const int maxn=5110; int n; struct node{ int x,y; }s[maxn],e[maxn]; int top; inline int area(node a1,node a2,node b1,node b2){ return (a2.x-a1.x)*(b2.

12. 形态学--轮廓、多边形逼近与凸包

1. 轮廓 findContours(image, mode, method[, contours[, hierarchy[, offset]]]) mode查找轮廓的模式 cv2.RETR_EXTEERNAL = 0,表示指检测外围扩阔 cv2.RETR_LIST = 1,检测的轮廓不建立等级关系,即检测所有的轮廓 cv2.RETR_CCOMP = 2,每层最多两级,从小到大,从里到外 cv2.RETR_TREE =

三维凸包

复杂度 \(O(n^2)\),可以处理多点共线、共面的情况 手动处理的共线共面,扰动点的话精度稍微要求高一些就寄了,当然可以扰动完再 random_shuffle( 这里有比较牛逼的数据:https://www.luogu.com.cn/problem/P2287 inline int sign(const double &a){return a>EPS?1:(a<-EPS?-1:0);} struct

计算几何-闵可夫斯基和

计算几何-闵可夫斯基和 闵可夫斯基和 闵可夫斯基和,又称作闵可夫斯基加法,是两个欧几里得空间的点集的和,以德国数学家闵可夫斯基命名。(小知识:闵可夫斯基曾经做过爱因斯坦的老师。) 闵可夫斯基和是两个欧几里得空间的点集的和,也称为这两个空间的膨胀集,被定义为 \[ A + B=\{a+b|a \i

P4557-[JSOI2018]战争【凸包,闵可夫斯基和】

正题 题目连接:https://www.luogu.com.cn/problem/P4557 题目大意 给出两个点集\(A,B\),\(q\)次询问给出一个向量\(v\),询问将\(B\)中所有点加上向量\(v\)后两个集合的凸包是否有交。 \(1\leq n,m,q\leq 10^5\) 解题思路 闵可夫斯基和定义了两个向量集合的和,这里只讨论凸包的闵可

题解 P3829 [SHOI2012]信用卡凸包

1.题意 给一些相同的信用卡,本质上是圆,求以所有信用卡的圆心为点集,求这个点集的凸包的周长。 2.思路 这题事实上没那么难。 不会凸包或者计算几何的,去看https://www.luogu.com.cn/problem/P2742,或者看看https://oi-wiki.org//geometry/的讲解。 事实上,如果信用卡是矩形,那么直接可

587. 安装栅栏(凸包问题)

587. 安装栅栏 在一个二维的花园中,有一些用 (x, y) 坐标表示的树。由于安装费用十分昂贵,你的任务是先用最短的绳子围起所有的树。只有当所有的树都被绳子包围时,花园才能围好栅栏。你需要找到正好位于栅栏边界上的树的坐标。   示例 1: 输入: [[1,1],[2,2],[2,0],[2,4],[3,3],[

[ARC070E]NarrowRectangles【动态规划】【堆】

分析: 首先先考虑300分做法:$dp[i][j]$表示前i个木板,第i个木板的左端点停在j处,转移的话就是$$dp[i][j] = dp[i-1][k] + |l[i]-j|,k \in [j-len_{i-1},j+len_i]$$ 然后把dp[i]看作是关于j的函数,注意到这个函数是下凸包的。 $dp[1] = |l[1]-j|$显然是个下凸壳 然后发现dp[i]的计算操作

凸包模板

#include<iostream> #include<cstring> #include<algorithm> #include<cstdio> #include<cmath> #define x first #define y second using namespace std; const int N = 110; typedef pair<int,int> PII; int n; PII d[N]; int stk[N],t

[JSOI2011] 柠檬

显然有暴力 dp。 然后需要注意到一个性质,就是 \(i\) 的最优决策点与 \(i\) 的颜色必定相同,且该区间一定会选端点的颜色,因为如果某一端和选的颜色不同,这一端都可以脱离出去而答案只会增大。 所以我们设 \(c[i]\) 表示 \(i\) 是同种颜色的第几个,那么转移就是 \(dp[i]=[col[j]=col[i]

[算法笔记]凸包问题

二维凸包问题 Andrew算法 写在前面: 本文参考自:刘汝佳《算法竞赛入门经典-训练之南》 介绍: 凸包:把给定点包围在内部的、面积最小的凸多边形。 Andrew算法是Graham算法的变种,速度更快,数值稳定性也更好。 算法实现: 首先把全部点按照x从小到打排序(x相等,则按照y从小到大排序),删除重复

OpenCV凸包

一、概述   案例:输入一张图片将其凸包绘制出来   概念:最大外接多边形 convexHull( InputArray points,// 输入候选点,来自findContours OutputArray hull,// 凸包 bool clockwise,// default true, 顺时针方向 bool returnPoints)// true 表示返回点个数,如果第二个参数是

Atcoder做题总结

ARC058C 发现 \(x+y+z\) 最多只有 \(17\) ,考虑状压,状态中第 \(i\) 位表示是否可以得到和为 \(i\) 的后缀。 注意一下每个位置是放 \(1\) ~ \(10\) 而非 \(0\) ~ \(9\) 。 ARC133D 区间异或和不好搞,差分一下设 \(w_i = XOR_{k=1}^i k\) 。 容易发现规律: \(w_{4x}=4x\) , \(w_{4x+1}

LGP5653口胡

操作好像比较神秘。 发现 \(k\) 很小,考虑和 \(k\) 有关的 DP,考虑不出来。 费用提前计算,对 \(w_i\) 做后缀和,那么序列的权值就是 \(\sum_{i=1}^nyw_i\)。 考虑 DP,明显有 \(dp[n][x]=\max_{i=-k}^kdp[n-1][x+i]+i\times w_n\)。 注意到这个形式有点像 \((\max,+)\) 卷积,很容易发现右

2.15

上午计算几何,下午多项式 讲了求凸包,直径,旋转卡壳,半平面交,都是计算几何比较基础的,但是依然难入门 多项式有拉格朗日插值,fast fast tle 和 nan tan tan FFT有个迭代优化,防止MLE,就是每次重复利用内存,按照顺序存储 NTT就是把FFT所求的单位根(w) 换成逆元就行 上午凸包旋转卡壳大体就是

计算几何入门

前言 这篇东西大部分都是在瞎bb,大佬们可以选择不看。 需要先学一点点线性代数的内容。 由于本人太菜,这篇博客只会讨论二维的情况。 由于本人太懒,因此会缺少一些示意图。 向量 点积/数量积 一般用 \(\vec a \cdot \vec b\) 表示,有 \(\vec a \cdot \vec b = |\vec a||\vec b|\cos \l