单调队列和dp或者是和一段连续的段的区间最值相关的问题结合使用。往往用于顺次扫描中随时随机需要区间最值的问题,或者是两个数之间的数的个数结合下标差,单调栈也是经常用在一些求间隔的数的个数或者是随时获得一段区间的最大最小值。两者的使用都对扫描的顺序有要求,如果是取随机的区间,则通常是线段树。单调队列对dp的使用经常要用到一种滑动的窗口操作,并且几乎所有的单调队列的使用都是一种滑动式的区间操作,需要查找某个值的时候往往要结合二分,而单调栈的用法显得更为巧妙,多变。有时线段树和单调栈可以结合使用。
网上大佬的博客
线段树维护单调栈
https://blog.csdn.net/HOWARLI/article/details/78206972
线段树维护单调队列
https://blog.csdn.net/qq_42555009/article/details/88078083