P1060 40pts求调
code:
#include <bits/stdc++.h>
using namespace std;
int v[30],w[30];
int dp[30005][30];
int main(){
int n,weight;
cin >> weight >> n;
for(int i = 0;i < n;i++){cin >> w[i] >> v[i];v[i] *= w[i];}
memset(dp,0,sizeof(dp));
for(int i = 0;i <= weight;i++){
for(int j = 1;j <= n;j++){
dp[i][j] = dp[i][j-1];
if(i > w[j]) dp[i][j] = max(dp[i][j],dp[i-w[j]][j-1] + v[j]);
}
}
cout << dp[weight][n];
return 0;
}