ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

xielv 1

2022-04-17 18:31:06  阅读:172  来源: 互联网

标签:xielv 决策 维护 最优 转移 单调 式子


简介

线性DP中有两类DP状态转移方程式:

1.状态转移中每一项中仅含阶段变量i或状态变量j(1D/1D)

2.状态转移中每一项中同时含阶段变量i与状态变量j

如果使用暴力DP的话毫无疑问两种都是O(n^2),此时面对n=1e5无能为力

但是,回归循环代码,我们会发现有些转移是没有必要的

砍掉这些没有必要的转移,能够有效地解决时间问题(类比最优性剪枝)

如果我们砍掉了没有必要的转移,就相当于维护决策单调性(最优往往对应单调)


单调队列

针对1D/1D状态转移方程,如果把外层循环的阶段变量i定住,会发生什么?

这时,有f[i]仅与变量j有关,那么这个时候就可以把所有与j有关的变量看成整体

我们只关注最优的决策,所以维护一个能够支持查询最优的数据结构

单调队列就是主场:

O(1)维护最值,显然快于其他数据结构,同时代码1行STL解决

我们只需要在队头排除不合法情况再在队尾插入较优决策即可

由于单调性,队头显然(并且应当)是最优决策

对于每个阶段i,取队首决策状态转移,然后将这一变量作状态插入候选队列即可

它的核心思想,维护决策单调性


斜率优化

针对同时含i和j的式子,这时显然单调队列不管用了,那么如何解决?

先将式子变一下形,变成一个正常的式子

把式子推成直线式

方便维护,那就j是自变量,只含j的项是因变量,同时含i,j的项中i是斜率,只有i的式子就是定值b

那么我们要做的,就是b最优

假设有一个决策k比决策j优,我们肯定能推出来决策k比决策j优的等价不等式

然后依据这个式子去判断维护什么样的决策点

对于最后的最优决策点,直接上状态转移方程

然后是维护上下凸壳的问题,这个时候前边提到的b最优就可以启示我们维护什么样的式子

数形结合即可解决战斗

标签:xielv,决策,维护,最优,转移,单调,式子
来源: https://www.cnblogs.com/22222222STL/p/16156672.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有