- DP背包问题的 恰好装满 问题 ~~
- 恰好装满背包,又分为价值最大和价值最小
可以转化为恰好装满,且价值最少。那么答案就落在 V − V + m a x ( v i ) V-V+max(v_i) V−V+max(vi).
为啥答案范围上限是 V + m a x ( v i ) V+max(v_i) V+max(vi) 呢?因为物品体积最大是 m a x ( v i ) max(v_i) max(vi) ,就有可能超出 V V V 刚好 m a x ( v i ) max(v_i) max(vi) 。
P2918 [USACO08NOV]Buying Hay S
代码:
#include <iostream>
#include<cstdio>
using namespace std;const int N=55005;
int dp[N],w[N],v[N];int main()
{int n,V; cin>>n>>V;for(int i=1;i<=n;i++) cin>>v[i]>>w[i];for(int i=1;i<N;i++) dp[i]=1e9;for(int i=1;i<=n;i++)for(int j=v[i];j<=V+5000;j++)dp[j]=min(dp[j],dp[j-v[i]]+w[i]);int res=1e9;for(int i=V;i<=V+5000;i++) res=min(res,dp[i]);cout<<res;return 0;
}
P1049 [NOIP2001 普及组] 装箱问题
本文发布于:2024-02-05 07:11:26,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170727072564299.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |