
单调栈
Moon1125666900
这个作者很懒,什么都没留下…
展开
-
Problem 1049: Lost My Music【可持久化栈+倍增】
首先要求的式子是一个斜率的相反数,其实就是求斜率的最大值,那么我们只需维护一个下凸包即可, 考虑到直接用栈来存,如果是在一条链上的话可以保证每个数只会被插入弹出一次,直接做,暴力退栈就行了。 然而在树上暴力退的话会被卡成O(N2N^2)…… 所以对于每个点存一个倍增数组,记录其在凸壳里的祖先,然后乱搞即可…… 代码://#include <bits/stdc++.h>#include <c原创 2017-11-30 11:25:37 · 492 阅读 · 0 评论 -
bzoj十一月份月赛 Problem A: 组题
题意:对于一个长度为n的数列,求一个长度>=k的子段,是的平均值最大。首先我想到的是对于i,相当于在1~i-k中找一个最大斜率。于是维护一个斜率的单调栈即可。然后查找时二分一下即可。不过这样写起来挺cd的,本蒟蒻码了1.8K,于是还跳了不少时间,最后WA了一发,全开longlong后A了…… 代码: http://paste.ubuntu.com/26139760/ 然而二分答案更好写(zzk原创 2017-12-08 22:39:21 · 366 阅读 · 0 评论