装箱问题
传送门:https://www.luogu.org/problemnew/show/P1049
01背包,虽然没有价值,但是“使背包剩余体积最小”就相当于在规定范围内选择最大的体积,所以这里的体积既是体积又是价值。
#include<cstdio> #include<algorithm> using namespace std; int n,m,w[30],f[20001]; int main() { scanf("%d%d",&m,&n); for(int i = 1;i <= n;i++) { scanf("%d",&w[i]); } for(int i = 1;i <= n;i++) { for(int j = m;j >= w[i];j--) { f[j] = max(f[j],f[j-w[i]]+w[i]); } } printf("%d\n",m-f[m]); return 0; }