P1048 [NOIP2005 普及组] 采药
01背包裸题。
不用数组记录每个物品的重量和价值,分别用两个变量记录即可。
1 #include <bits/stdc++.h> 2 using namespace std; 3 int t, m, x, y; 4 int f[1005]; 5 int main() { 6 scanf("%d %d", &t, &m); 7 for (int i = 1; i <= m; i ++) { 8 scanf("%d %d", &x, &y); 9 for (int j = t; j >= x; j --) 10 f[j] = max(f[j], f[j - x] + y); 11 } 12 cout << f[t] << '\n'; 13 return 0; 14 }