CSP历年复赛题-P1049 [NOIP2001 普及组] 装箱问题
原题链接:https://www.luogu.com.cn/problem/P1049
题意解读:装尽可能多的物品,使得总体积越大越好,即剩余空间最小,还是一个01背包问题,物品的体积就是其价值。
解题思路:
01背包模版题,物品体积、价值相同,直接采用一维dp。
100分代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 35, M = 20005;
int V, n;
int v[N], w[N];
int dp[M];
int main()
{
cin >> V >> n;
for(int i = 1; i <= n; i++)
{
cin >> v[i];
w[i] = v[i];
}
for(int i = 1; i <= n; i++)
{
for(int j = V; j >= v[i]; j--)
{
dp[j] = max(dp[j], dp[j-v[i]] + w[i]);
}
}
cout << V - dp[V];
return 0;
}