浅谈单调队列优化DP
对于形如
的状态转移方程,也就是转移来自之前某个定长区间的最值,我们可以使用单调队列来维护区间最值,从而优化时间复杂度。
烽火传递
我们看到题目可以想到用
那么可以想到,点了第
边界
答案
然后这一道题要求定长区间最小值,我们可以用单调队列优化
修剪草坪
这道题目有两种解法,一种是直接计算(未懂),另一种是一种转化的思路
题目让我们最多连续选
然后同样从前
旅行问题
环形问题我们会想到化环为链 ,那么很容易想到将原数组复制两次,这样原问题就转化成了
在新数组中是否存在长度为
的合法区间
接下来我们考虑顺时针的问题
顺时针
每个点
-
更新前缀和
-
从任意一点
出发,顺时针走一圈,我们要保证在过程中油量始终 ,也就是在 中,对任意的 ,都要保证 , 固定,找 的最小值,也就是在区间内找 最小值,然后与 比较 -
这里我们要进行反向遍历,从
到 (顺时针需要求出 后面 一段区间中的最值,只有从后往前做才能在处理到当前数的时候,把后面数的信息存下来),由于计算的时候会用到 ,所以这里我们就先更新再求值。
逆时针
每个点
更新
在任意情况下都有
然后正向遍历维护
绿色通道
这道题目我们要使得最大长度最小,所以考虑二分
我们设最大空题子段长度为
然后对于
转移就是从上一段区间的中找到最小值
边界
答案为我们得出来的值-1,因为,我们考虑的是每
二分边界:
的值越大, 就越小(不用做的题目多了),所以当 时,要将 值缩小(让 趋近于 )
琪露诺
这道题如果用这个点转移到区间内会很麻烦,所以我们考虑用区间转移到点的方式来做
转移就是从上一段区间的中找到最小值
边界
答案
那么这里提一下,这个从
接下来这道题的边界也有些麻烦
每一次放到队列里的值是
比较的值当然也是
__EOF__

本文链接:https://www.cnblogs.com/ljfyyds/p/17512283.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战