数据结构-单调栈
Maxwei_wzj
AFO
展开
-
【POJ2796】Feel Good-单调栈
测试地址:Feel Good 题目大意:给定一个元素均为非负整数的序列AAA,求一个区间[l,r][l,r][l,r]使得min(Ai(l≤i≤r))×∑ri=lAimin(Ai(l≤i≤r))×∑i=lrAi\min(A_i(l\le i\le r))\times \sum_{i=l}^rA_i最大。 做法:本题需要用到单调栈。 题目要求的式子里面有个最小值,这就比较明显地把方向向单调栈引...原创 2018-03-02 17:51:30 · 341 阅读 · 0 评论 -
【POJ3044】City Skyline-单调栈
测试地址:City Skyline 题目大意:给定一个直方图轮廓,问最少需要多少个矩形能够拼出这个轮廓(矩形可以相交)? 做法:本题需要用到单调栈。 对每个点求出以该点为最小值的最大区间,我们发现题目要求的就是除了元素0外,有多少本质不同的区间。 我们把高度逐一入栈,当一个元素出栈时(并且不是因为一个和它相等的元素出栈,而且这个元素不是0),就代表出现了一个新的本质不同的区间,对这样的出栈...原创 2018-03-02 18:48:13 · 485 阅读 · 0 评论 -
【51Nod1952】栈-单调栈+单调队列
测试地址:栈 做法:本题需要用到单调栈+单调队列。 我们可以用一些高级数据结构O(nlogn)O(nlogn)O(n\log n)简易地算出这个结果,但是看到数据范围,知道我们必须要找一个O(n)O(n)O(n)的做法。 我们看既有插入又有删除的那一端,显然可以用一个单调栈来维护,单调栈内的元素从栈底到栈顶应该严格递增。 那么另一端我们怎么处理呢?我们发现,只有当上面的单调栈取完时,我们...原创 2018-04-17 17:55:44 · 234 阅读 · 0 评论 -
【BZOJ4709】柠檬(JSOI2011)-决策单调性优化DP+单调栈
测试地址:柠檬 做法:本题需要用到决策单调性优化DP+单调栈。 首先需要发现一个结论:最优方案中被分成的每一段的头尾贝壳的大小应该是相同的,并且这一段中产生贡献的就是这个大小。因为如果上面条件中有一个不满足,我们把某个端点单独分成一个段就比这个方案更优了。于是我们令f(i)f(i)f(i)为前iii个贝壳能得到的最大答案,有以下状态转移方程: f(i)=max{f(j−1)+sj(sum(i...原创 2018-07-11 21:07:04 · 504 阅读 · 0 评论 -
【BZOJ3235】好方的蛇(AHOI2013)-DP+单调栈+容斥
测试地址:好方的蛇 做法:本题需要用到DP+单调栈+容斥。 首先,容易想到预处理出某个顶点(左上、左下、右上、右下)为(i,j)(i,j)(i,j)的合法矩形数目。怎么预处理呢?以处理右下顶点为(i,j)(i,j)(i,j)的合法矩形数目为例,我们要数的实际上是合法的左上顶点的数目,我们发现这个数目可以这样计算:令up(i,j)up(i,j)up(i,j)为从点(i,j)(i,j)(i,j)向...原创 2018-07-12 18:23:11 · 278 阅读 · 0 评论 -
【51Nod1623】完美消除-数位DP+状态压缩+单调栈
测试地址:完美消除做法: 本题需要用到数位DP+状态压缩+单调栈。对于一个数字,如何求出它的最小消除次数?把每一位一一推入单调栈(栈顶元素最大),并在最后把所有的元素都出栈,那么元素出栈的总次数就是最小消除次数。这一点做过单调栈题的同学应该很容易能看出来了。那么对于这一题,显然看出是数位DP,而且数位DP也是从高位到低位转移。我们又发现数位只有000 ~ 999这101010个数字,于是我们...原创 2018-10-31 12:03:00 · 232 阅读 · 0 评论