/*
0/1背包模板题
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int t[1005],v[1005];
int dp[1005];
signed main(){
int T,M;
cin>>T>>M;
for(int i=1;i<=M;i++){
cin>>t[i]>>v[i];
}
for(int i=0;i<=T;i++){
dp[i]=0;
}
for(int i=1;i<=M;i++){
for(int j=T;j>=t[i];j--){//0/1背包必须倒着写,要依赖之前的数据
dp[j]=max(dp[j],dp[j-t[i]]+v[i]);
}
}
printf("%lld\n",dp[T]);
}
0/1背包DP模板题,洛谷P1048
最新推荐文章于 2024-07-21 11:20:00 发布