随笔分类 -  数据结构-单调栈

摘要:题意:有一排建筑,每座建筑有一定的高度,宽度可以忽略,求在某点的平地上能看到天空的最大角度。 网上的做法基本都是离线的...其实这道题是可以在线做的。 对于向右能看到的最大角度,从右往左倍增维护每个时刻的单调栈(凸壳),对于每个询问,先二分找到它右面的第一个建筑的位置,然后在对应的凸壳上倍增找到切点 阅读全文
posted @ 2019-10-30 21:45 jrltx 阅读(184) 评论(0) 推荐(0)
摘要:题意:求一个序列中本质不同的连续子序列的最大值之和。 由于要求“本质不同”,所以后缀数组就派上用场了,可以从小到大枚举每个后缀,对于每个sa[i],从sa[i]+ht[i]开始枚举(ht[0]=0),这样就能不重复不遗漏地枚举出每一个子串。 但是这样做,最坏情况仍旧是$O(n^2)$的,可能会被卡掉 阅读全文
posted @ 2019-10-15 21:22 jrltx 阅读(422) 评论(0) 推荐(0)
摘要:题意:求一个直方图中最大矩形的面积。 很经典的一道问题了吧,可以用单调栈分别求出每个柱子左右两边第一个比它低的柱子(也就相当于求出了和它相连的最后一个比它高的柱子),确定每个柱子的左右边界,每个柱子的高度乘上左右边界的宽度求最大值就行了。 也可以用笛卡尔树上dp的方法搞一搞,即用每个结点权值和所在子 阅读全文
posted @ 2019-03-16 00:00 jrltx 阅读(445) 评论(0) 推荐(0)