阅读背景:

NYOJ 654 喜欢玩warcraft的ltl -- 01背包 一中常数优化

来源:互联网 
一个常数优化前面的伪代码中有for v=V..1,可以将这个循环的下限进行改进。
由于只需要最后dp[v]的值,倒推前一个物品,其实只要知道dp[v-w[n]]即可。以此类推,对以
第j个背包,其实只需要知道sumc[i->n](第i物品到最后一个物品的消耗和,因为前面的对结果没有影响)即可,即代码中的

1 for i -> 1 to N
2     do for v -> V to 0
3         do

可以改成:

1 for i -> 1 to n
2     do bound -> max(dp[V - sumc[i->n]], c[i]) // 《背包九讲》中这里笔误写错了。
3     for v -> V to bound
4         do
这对于V比较大时是有用的。
----- 摘自《背包问题九讲v1.1》
一个常数优化前面的伪代码中有for v=V..1,可以将这个循环的下限进行改进。
由于只需要最



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: