hdu3466 Proud Merchants 变形01背包

很好的一道01背包题 好写超难想

首先为什么不是普通的01背包

5 10 5

3 5 6 

这两个物品观察先后顺序造成的结果 先买第一件 后买第二件 则需要的价值大于等于10+0=10即可  反过来 则需要10+3=13

这说明选一个物品是否加入背包和这个物品在所有物品中的访问次序有关联

所以只要解决物品的次序问题 就是普通01背包了

针对两个物品p1 q1 v1和p2 q2 v2 先决定买不买1再决定买不买2可以这样表示:需要的价值m1>=q1+p2 反过来则m2>=q2+p1

假如一种方案优 则m1<m2            q1+p2<q2+p1              移项q1-p1<q2-p2

也就是物品访问的优先级和q-p有关 这样再用01背包就过了


发表完看了别人的题解 还有个说法是:如果没有金钱的限制的话我们进行求解dp是肯定没有后效性的,但是有了金钱的限制之后完全就不一样了。要保证dp方程无后效性 j-p[i]一定要比j先算,那么当算i时,最小能算到q[i]-p[i],这样保证后面的可以用到前面的状态,因此以q[i]-p[i]排序即可保证无后效性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值