
数据结构-单调栈
文章平均质量分 55
Toooooocold
这个作者很懒,什么都没留下…
展开
-
Codeforces 601B Lipshitz Sequence
if n , if n ≥ 2, over all 1 ≤ i j ≤ n将h[i]看作是前缀和的话,L(h)就是求最大平均值AVE(i, j),显然就是单个的最大值MAX(i, j).所以题目变成了求对L到R中,所有长度大于1的区间的MAX(i, j)的和。对于2到n的每一个数,要找出哪些区间它有贡献,可以维护一个单调递减的栈,求出每个数的最大贡献的左右区间。原创 2017-06-04 15:47:35 · 250 阅读 · 0 评论 -
UVALive 6748 2D-Solar System
按照初始位置排序,那么答案必定小于等于相邻两个圆相切的情况。 注意到对于一个圆,令左端离他最近的半径比他大的圆的位置为L,右端离他最近的半径比他大的圆的位置为R,这个圆只会受到L到R这段区间的影响。 所以维护一个半径单调递减的栈即可。原创 2017-08-14 23:01:49 · 243 阅读 · 0 评论 -
UVALive 4950 Selling Land
在维护高度递增的单调栈中,同时维护周长递增(这一点是很容易证明的),就可以用O(n^2)的复杂度解决了。代码:#include#define fi first#define se second#define pb push_back#define lson o<<1#define rson o<<1|1#define CLR(A, X) memset(A, X, siz原创 2017-07-11 14:26:22 · 295 阅读 · 0 评论