随笔分类 -  数据结构-笛卡尔树

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