随笔分类 - 数据结构-笛卡尔树
摘要:题目链接 题意:求一个序列的最大的(区间最小值*区间和) 线段树做法:用单调栈求出每个数两边比它大的左右边界,然后用线段树求出每段区间的和sum、最小前缀lsum、最小后缀rsum,枚举每个数a[i],设以a[i]为最小值的区间为[l,r] 若a[i]>0,则最优解就是a[i]*([l,r]的区间和
阅读全文
摘要:题意:求一个直方图中最大矩形的面积。 很经典的一道问题了吧,可以用单调栈分别求出每个柱子左右两边第一个比它低的柱子(也就相当于求出了和它相连的最后一个比它高的柱子),确定每个柱子的左右边界,每个柱子的高度乘上左右边界的宽度求最大值就行了。 也可以用笛卡尔树上dp的方法搞一搞,即用每个结点权值和所在子
阅读全文

浙公网安备 33010602011771号