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 }

 

posted @ 2022-10-10 09:14  YHXo  阅读(127)  评论(0编辑  收藏  举报