斜率优化学习笔记

背景:

今天几个高中大佬讲了讲联赛难度的DP,怎么感觉不简单啊!

就连普及组的题都要用斜率优化啊!

还是学学这个斜率优化吧……

 

斜率优化:

1.算法用途:用于优化一些DP形如的式子:

f[j]-f[k]<kx+b

2.算法步骤:(例题:HDU\left ( 3507 \right )链接

1.推出DP方程式:f[i]=min(f[j]+(sum[i]-sum[j-1])^{2}+M)(j<i)

2.设在求Fi时从Fj转移比从Fk转移更优

3.写出一个不等式f[j]+(sum[i]-sum[j-1])^{2}+M<f[k]+(sum[i]-sum[k-1])^{2}+M

4.拆开移项合并同类项:f[j]-f[k]<2sum[i](sum[j-1]-sum[k-1])+sum[k-1]^{2}-sum[j-1]^{2}(形如kx+b

5.继续变形变成:(f[j]-f[k]+sum[j-1]^2-sum[k-1]^2)/(2*(sum[j-1]-sum[k-1]))<sum[i]

6.设xi=f[i]+sum[i-1]^2yi=sum[i-1]*2

7.则原式可以写成:(xj-xk)/(yj-yk)=sum[i]

8.因为sum[i]呈单调性,所以j的转移一定比k优(见下图)

 

9.这其实是下凹凸包(链接1:大佬博客)(链接2:百度百科

10.所以可以用一个单调队列,过程如下:

11.一直往下,直到解比队尾更优

12.所以开始的时候直接从队头开始进行DP

 

小结:

1.要先想出DP方程式

2.写出不等式

3.根据题意化简变为斜率优化的样子

 

继续加油!

转载于:https://www.cnblogs.com/zhouyifei/p/11295016.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值