6 条题解
信息
- ID
- 2736
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 3
- 标签
- (无)
- 递交数
- 53
- 已通过
- 13
- 上传者
设选中物品的总重量为 h,总体积为(v。
神奇背包需要存在一个自然数 x,满足:
h≤H−x,v≤V+x化简:
x≤H−h x≥v−V又因为 x≥0,所以:
max(0,v−V)≤H−h等价于:
h≤H,h+v≤H+V因此问题变成:
选择若干物品,使:
价值最大。
定义:
dp[i][j]表示当前总重量为 (i),总体积为 (j) 时的最大价值。
转移:
dp[i][j]=max(dp[i][j],dp[i−h][j−v]+w)因为物品只能选一次,所以两个维度倒序枚举。
初始化:
dp[0][0]=0
其余为负无穷
最后枚举所有:
i≤H, i+j≤H+V取最大值。
状态数:
O(H(H+V))转移:
O(nH(H+V))