利用线性规划的思想理解斜率优化DP

斜率优化DP做为1种较难理解的DP,在ACM中也有重要的作用。现有的论文或博客讲斜率优化DP要么过于抽象,要么推倒过于繁琐,这里用高中学的线性规划的知识来理解斜率优化DP,且思考方法具有一般性,可用于解决各种斜率优化问题。

以hdu3507http://acm.hdu.edu.cn/showproblem.php?pid=3507为例题。

我们很容易能推出方程F【i】= min{F【j】+(Si-Sj)^2 + M }

这是1个1D/1D的方程,即状态O(N),转移O(N),直接求效率为O(N^2)。

本题N为500000,O(N^2)显然不行!

这里,用斜率优化的方法,将转移的O(N)优化为均摊复杂度O(1),总复杂度O(N)的效率解决这个问题。

首先,将方程展开,并将带有j的项整理出来:

F【i】= min{F【j】+Sj^2-2*Si*Sj+Si^2 + M }

下一步,是斜率优化的关键,即找出一个直线方程。

令K=2*Si,X=Si,Y=F【j】+Sj^2,常数C=Si^2 + M

方程变为:

F【i】= min{Y-KX+C}

求某个F【i】,就是从前面的所有点(X,Y)的状态推来,我们开始描点。

首先分析点随这j的增加的趋势,j增加,可以推出K,X,Y都增加。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值