![](https://img-blog.csdnimg.cn/5831f8688335452bb926ffe798cacffe.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
单调栈优化
StaroForgin
这个作者很懒,什么都没留下…
展开
-
[雅礼集训2018]施工
施工题解应该是很容易想到dp的。明显,如果一个楼房要增长高度的话,它两边的楼房都需要比他高,否则是不优的。但这个高可能是在前面增长后得到的。但我们发现,如果要增长的话,夹在最优解两个端点间的一段一定是高度相同的,否则一定可以把这个涨上去。于是我们设dpidp_{i}dpi为对于前i个点保持第iii个点不变时的答案。有转移方程式dpi=∑k=i+1j(t−hj)2+2c(hi+hj−2t)dp_{i}=\sum_{k=i+1}^{j} (t-h_{j})^2+2c(h_{i}+h_{j}-2t原创 2020-11-15 17:25:02 · 193 阅读 · 0 评论 -
[SDOI2013]保护出题人
保护出题人题解为什么我一点也不想做这道题题面已经很明晰了,玩过PVZ的都明白,没玩过的建议玩一下。由于每只僵尸间的间隔都为,而打死每只僵尸需要打死它前面的所有僵尸,故需在这只僵尸到达前造成前面几只僵尸血量和相等的伤害。于是,在第关打死第只僵尸需要的攻击为。故,第关需要的伤害为。至于上面的求和,可以用前缀和处理,于是就得到一个的算法,可以得到50pts,实际上是60pts。看到这个式子,应该很容易想到斜率。,记其为与两个点,每次将后面形式的点加入凸包,用栈来进行维护。再讲前面的点在凸包原创 2020-08-25 18:37:41 · 125 阅读 · 0 评论 -
[CF1107G]Vasya and Maximum Profit
Vasya and Maximum Profit题解令,可得方程式。当固定时,的变化导致的变化一定是单调上升的,而造成影响的一定是一小部分,我们可以将这个值记录下来,用单调栈维护差值的最大值,同时记录下后面的一串,用于统计答案。源码#include<bits/stdc++.h>using namespace std;#define MAXN 300005typedef long long LL;typedef pair<int,int> pi原创 2020-08-12 22:01:49 · 142 阅读 · 0 评论 -
货物分组
货物分组题解我们可以先分析各个分数段的代码。10分:直接爆搜出结果。时间复杂度30分:考虑dp。指从前j个节点分i包的最小值,通过线段树维护区间最值。时间复杂度60分:还是dp。指前i个已经分了若干包时整个序列的最小值。 ,是后缀和。时间复杂度100分:我们发现我们可以用一个单调栈来维护最大值与最小值。时间复杂度源码#include<...原创 2019-11-04 16:26:06 · 234 阅读 · 0 评论