#include<cstdio> #include<iostream> #include<cstring> #include<cmath> using namespace std; #define ll long long ll t,m,dp[1000+8][1000+8],w[1000+8],v[1000+8]; void solve() { for(ll i=m-1;i>=0;i--) { for(ll j=0;j<=t;j++) { if(j<w[i]) { dp[i][j]=dp[i+1][j]; } else { dp[i][j]=max(dp[i+1][j] , dp[i+1][j-w[i]]+v[i]); } } } printf("%lld\n",dp[0][t]); } int main() { scanf("%lld%lld",&t,&m); for(ll i=0;i<m;i++) { scanf("%lld%lld",&w[i],&v[i]); } solve(); return 0; }
原文:https://www.cnblogs.com/RootVount/p/11252974.html