土地购买 [DP斜率优化]

该博客讨论了一种优化动态规划算法的方法——斜率优化,用于解决土地购买问题。当土地有包含关系时,首先排除。然后按土地宽度排序,通过动态规划求解最小费用,但原始方法会导致超时。通过斜率优化,可以维护一个类似“凸包”的结构,利用单调队列特性加速计算,找到最优解。这种方法适用于涉及乘除法且具有单调性的动态规划问题。
摘要由CSDN通过智能技术生成
经典的题目,土地购买:Farmer John需要买下n(≤50000)块长方形的土地,每块的花费就是长宽之积(就是面积)。他可以一次买多块土地,价格是它们最大的长乘以它们最大的宽, 但是土地的长宽不能交换。问Farmer John在合理分组购买土地下,最少需要的花费。

首先,如果一块土地被另一土地包含(比如5*10的土地包含4*6的土地),那么这块土地就不用考虑了,从数据中去掉。然后按土地的宽度排序,可以发现高度必然是递增的:

土地购买 DP斜率优化 - lightsky - lightsky的oi

设f(i)为购买前i块土地所需最少费用,这个只需要枚举最后一组购买的土地设为j是哪些即可:f(i)= min(f(i),f(j - 1)+ w(j)* h(i)),w(i)是第i块土地的宽,h(i)则是高。

这个明显超时,这时就可以用斜率优化了。斜率优化的是利用比较两值的优异来实现快速转移的。设有两种选择分别为:从j到i,和从k到i,不妨设j < k。如果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值