P1060 开心的金明

题意:给出能够使用的金额上线,给出m个物品;

    给出m个物品的价值与重要度;

      给出价值计算方法:重要度*价值

        求在不超过使用金额的情况下,购买物品得到的权值最高;

思路:很明显的01背包,枚举即可;

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=3e4+10;
 4 int dp[maxn];
 5 int v[30];int w[30];
 6 int main()
 7 {
 8     int n,m;
 9     scanf("%d%d",&n,&m);
10     for(int i=1;i<=m;i++){
11         scanf("%d%d",&w[i],&v[i]);
12     }
13     for(int i=1;i<=m;i++)
14     for(int j=n;j>=w[i];j--){
15         dp[j]=max(dp[j],dp[j-w[i]]+v[i]*w[i]);
16     }
17     printf("%d\n",dp[n]);
18     return 0;
19 }
View Code

 

posted @ 2020-03-23 15:11  古比  阅读(109)  评论(0编辑  收藏  举报