单调队列优化dp 理解
来源:互联网 发布:黄晓明 杨过 知乎 编辑:程序博客网 时间:2024/04/27 22:31
首先看这样一个方程:f[i] = max{f[j] + s[i] - s[j + 1]}, j >= i - m 。
对于该方程,如何用单调队列优化呢?
移项之后,有 f[i] - s[i] = f[j] - s[j + 1] 。很显然,维护等式右边的值单调递减即可,每次剔除无用决策,在用当前所得决策更新所有不如其优的决策,因为那些决策如果不如当前决策优,那么他们便毫无用处了。这样每次的决策都是最优的。
然而再看这样一个方程:f[i] = min{f[j] + i - j - 1}, g[i] = min{s[i] - s[j]}, g[i] >= g[j] 。
这样的方程看上去并无单调性。然而,又可以发现两个性质:
1. f[j] - j 单调非升。显然,j 每次增大 1,而 f[j] 却不一定。
2. s[i] >= s[j] + g[j] 成立,则决策合法,而 s[i] 单调递增。
如何利用这两个性质呢?
首先对于性质 1,可以知道越靠后的决策越优。而对于性质 2,每次都可以在退队首的时候判断更靠后的决策是否可行,以及为了使 g[i] 取到最小值,在已知靠后决策不更差的情况下退队尾。这样一来,即维护了一个决策单调递增,决策代价单调非降,g 值单调非降的单调队列。这样,每次取到更新过的队头,都是最优值。
以上的两个例子无论是从单调性还是取值,都截然不同,但都是用单调队列维护。所以说考试的时候要认真分析。
- 单调队列优化dp 理解
- 单调队列优化DP
- 单调队列优化DP
- dp单调队列优化
- 单调队列--优化dp
- 单调队列优化dp
- 单调队列优化DP
- 单调队列优化DP
- 单调队列优化dp
- 模型化理解单调队列优化和斜率优化DP
- pku3709 dp单调队列优化
- POJ2373...单调队列优化DP...
- HDU3401 单调队列优化DP
- hdu4362 dp + 单调队列优化
- 单调队列优化的DP
- HDU4122 单调队列优化DP
- HDU2191(单调队列优化DP)
- hdu4374 单调队列优化dp
- (个人原创)关于虚拟机安装gitserver
- JAVA程序员成长之路(必读书籍推荐)
- Visual Studio 的 _MSC_VER 宏
- coreseek安装测试
- I2C总线性能介绍
- 单调队列优化dp 理解
- 初学Android,电池电量提示(七十五)
- java_web之ServletContext应用
- json使用简明教程及boost_property_tree
- Python中文乱码问题——MySQL
- error C4335: 检测到 Mac 文件格式: 请将源文件转换为 DOS 格式或 UNIX 格式
- 算法导论CLRS 2.3 合并排序
- 嵌入式操作系统内核原理和开发
- LDD3学习-第十章-中断处理<二>