凸包
romiqi_new
这个作者很懒,什么都没留下…
展开
-
[洛谷2742]凸包模板
洛谷2742凸包模板Code:#include<bits/stdc++.h>#define db doubleusing namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') f=-f;ch=getchar();} while...原创 2019-02-21 21:24:50 · 406 阅读 · 0 评论 -
[BZOJ3203][凸包][三分]SDOI2013:保护出题人
OJ挂,链自找由题目的特性可知,我们可以把血量求前缀和,然后视为同时攻击则每次的yiy_iyi可以表示为sum[i]−sum[j−1]x[i]−(i−j)∗d(1≤j≤i−1)\frac{sum[i]-sum[j-1]}{x[i]-(i-j)*d}(1\le j\le i-1)x[i]−(i−j)∗dsum[i]−sum[j−1](1≤j≤i−1)直接求就是n2n^2n2考虑优化,发现...原创 2019-09-29 22:11:19 · 155 阅读 · 0 评论 -
[BZOJ3571][KM][凸包]HNOI2014:画框
BZOJ3571就类似最小乘积生成树,在凸壳上面分治就完了就是把kruscal改成KMCode:#include<bits/stdc++.h>#define pb push_back#define ll long longusing namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); w...原创 2019-08-30 18:26:12 · 98 阅读 · 0 评论 -
[凸包][斜率]SCOI2019:湖之精灵的游戏
传送门把叉积拆开,区间和转化为前缀和然后前缀和就是f[i]=∑xi∗y−∑yi∗xf[i]=\sum{xi}*y-\sum{yi}*xf[i]=∑xi∗y−∑yi∗x要求一个j使得f[i]−f[j]f[i]-f[j]f[i]−f[j]最大(最小一样的)那就是(∑xi∗y−∑yi∗x)−(∑xj∗y−∑yj∗x)(\sum{xi}*y-\sum{yi}*x)-(\sum{xj}*y-\sum...原创 2019-08-06 13:08:14 · 114 阅读 · 0 评论 -
[ARC072F][凸包][单调队列]DAM
ARC072F我们把x设为v,y设为v*t,则水的合并就是向量的加减然后询问就是询问能凑出来的状态中最大的是多少可以把每个状态看作平面上的一个点, 然后能凑出来的点集是凸的,那就单调队列维护一下上凸壳就好了Code:#include<bits/stdc++.h>#define ll long long#define mod 998244353#define db dou...原创 2019-08-01 20:08:42 · 212 阅读 · 0 评论 -
[BZOJ5317][凸包][闵科夫斯基和]JSOI2018:部落战争
BZOJ5317闵科夫斯基和模板题吧,求出闵科夫斯基和然后判断每个询问在不在里面就好了JSOI2018就比较好,有简单一点的题也有难题,比较均衡Code:#include<bits/stdc++.h>#define db double#define ll long long#define eps 1e-11using namespace std;inline int ...原创 2019-03-08 09:58:34 · 220 阅读 · 0 评论 -
[分块][凸包]旅行计划
BZOJ2388维护区间加,前缀和最大值如果把下标看做x,前缀和看做y,就变成了找凸包上最高点的问题修改整块:维护斜率,首项修改散块:暴力重构对最后一个散块后面的影响:整体加上一个数,用标记Code:#include&amp;lt;bits/stdc++.h&amp;gt;#define ill long long#define INF 1e18#define db doubleusing ...原创 2019-01-21 15:50:52 · 215 阅读 · 0 评论 -
[BZOJ4570][数学][凸包]SCOI2016:妖怪
BZOJ4570要求的是max(min(xi+yi+abxi+bayi))max(min(x_i+y_i+\frac{a}{b}x_i+\frac{b}{a}y_i))max(min(xi+yi+baxi+abyi)),由对勾函数的性质得ab=xiyi\frac{a}{b}=\sqrt{\frac{x_i}{y_i}}ba=yixi观察一下发现就是求上凸壳,然后用边来更新...原创 2019-03-26 21:38:52 · 159 阅读 · 0 评论 -
[HAOI2011][BZOJ2300][凸包]防线修建
BZOJ2300维护动态凸包周长,如果维护删点很不好维护,所以可以倒着维护加点每加一个点就维护一下当前它左边和右边分别有多少点会被删除(叉积小于0)就行了可以用set维护Code:#include<bits/stdc++.h>#define db doubleusing namespace std;inline int read(){ int res=0,f=1;ch...原创 2019-02-21 11:39:19 · 91 阅读 · 0 评论 -
[POJ1912][凸包+二分]A highway and the seven dwarfs
POJ1912分析:先求凸包,然后问题转化为O(logn)O(logn)O(logn)求直线是否与凸多边形相交记录多边形每条边的斜率,然后二分求交点就行了把一个double写成了int,wa了无数次Code:#include<bits/stdc++.h>#define db doubleusing namespace std;inline int read(){ i...原创 2019-02-21 10:00:28 · 181 阅读 · 0 评论 -
[HDU3847][凸包] WF2011K:trash removal
HDU3847这是WF?求个凸包,枚举每条边,再枚举每个点算一下和枚举的边的距离然后取个max,再把max和ans取个minCode:#include<bits/stdc++.h>#define db doubleusing namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(...原创 2019-02-26 13:29:16 · 165 阅读 · 0 评论 -
[LOJ2197][线段树][凸包][三分]SDOI2014:向量集
LOJ2197和UOJ191unknown类似我们知道点积等于一个向量的长度乘以另一个向量在这个向量上的投影的长度那么如果我们把范围限制在180°内,则这个函数是单峰的,那就可以线段树维护上下凸壳,查找的时候三分但是直接维护会T飞,因为需要合并,复杂度很高换一种方法,我们是从左到右依次加入的,那就意味着如果我们要查询线段树的一个节点的话,那这个节点对应的区间一定被填满了,所以我们可以在填...原创 2019-09-29 23:28:19 · 185 阅读 · 0 评论