P1060 开心的金明
题意:给出能够使用的金额上线,给出m个物品;
给出m个物品的价值与重要度;
给出价值计算方法:重要度*价值
求在不超过使用金额的情况下,购买物品得到的权值最高;
思路:很明显的01背包,枚举即可;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }