队列是啥都知道对吧?
单调队列就是一个保证队列内元素单调的队列,这个队列和普通队列在操作上最大的不同就是既可以从队头弹出元素也可以从队尾弹出元素。队尾弹出是为了保证队列的单调性。
为啥我要让队列单调?
单调队列的基本用途就是求固定长度的区间的最值。。啊我不是说像rmq问题那样随便给个区间让求最值啥的。。它可能要求一系列区间,而这些区间的左端点和右端点排起序来都是单调的,那么用单调队列扫一遍就可以 O(n) 出解。其实有一些时候也不需要真的开出一个队列来啦。。平常用得很多的那种两个指针扫一遍的方法实际上跟单调队列就是差不多的啦。
举个例子来说,比如有一个DP方程是 f[i]=min{
f[j

单调队列是一种特殊队列,保证队列内元素单调,常用于求固定长度区间内的最值问题。它通过维护头尾指针,确保单调性,例如在POJ-2823等题目中,可以高效求解区间最小值或最大值。单调队列可用于DP的斜率优化,如在修剪草坪、生日礼物等题目的解决方案中。
最低0.47元/天 解锁文章
1129

被折叠的 条评论
为什么被折叠?



