https://www.luogu.com.cn/problem/P1048?contestId=154692
`
include<bits/stdc++.h>
using namespace std;
int v[105];
int value[105];
int dp[105][1005];
int main(){
int t,m;
cin >> t >> m;
for(int i=1;i<=m;i++){
cin >> v[i] >> value[i];
}
for(int i=1;i<=m;i++){
for(int j=1;j<=t;j++){
if(v[i]>j){
dp[i][j]=dp[i-1][j]; \如果装不下就装它的上一级
}
else{
dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+value[i]);\如果装得下就比较它的上一级和它本身的价值与其能加的最大价值的和取max
}
}
}
cout << dp[m][t];
return 0;
}
`