用单调栈解决经典区间最值问题

  • 对于“给定一个数组和若干询问,每次询问给出区间,求区间的最值”这种问题,解法多种多样,可以使用稀疏表、莫队、线段树、树状数组等算法解决。这里提供一个新的思路:单调栈。
  • 写法很简单,但是思想很妙妙。将查询离线,每次将 [stk[top] + 1, r] 的下标插入单调栈中,之后二分得到大于等于 l 的第一个下标,其对应的数字就是这个 [l, r] 区间中的最值。结合之前一道我自己用线段树解的单调栈问题,我们似乎可以发现两个算法之间互相存在某种可替代性。
  • 感兴趣的同学可以自行使用洛谷 P3865 进行练习。

posted on 2024-09-04 23:56  wuhu12345  阅读(92)  评论(0)    收藏  举报

导航