P1049 [NOIP 2001 普及组] 装箱问题
P1049 [NOIP 2001 普及组] 装箱问题 - 洛谷
这个问题是典型的 0/1 背包问题,我们需要在给定的物品中选择若干个,使得它们的体积尽可能接近箱子的容量 V,并且不超过箱子的最大容量。最终的目标是使得箱子剩余的空间最小。
#include <bits/stdc++.h>
using namespace std;
const int N =1e6+10;
#define ll long long
ll v,n,w[N],f[N];
int main()
{cin>>v>>n;for(int i=1;i<=n;i++) cin>>w[i];for(int i=1;i<=n;i++)for(int j=v;j>=w[i];j--)f[j]=max(f[j],f[j-w[i]]+w[i]);cout<<v-f[v];return 0;
}