典型背包问题;
感觉二维能过,who know ,一直没过;
好吧,改成以为了;
#include<bits/stdc++.h> using namespace std; #define int long long int t,m,tim[300],v[300],dp[1010]; signed main() { cin>>t>>m; for(int i=1;i<=m;i++) cin>>tim[i]>>v[i]; for(int i=1;i<=m;i++) { for(int j=t;j>=1;j--)//倒序,因为在更新j之前的数是上一次的值,更新j需要利用前一个物品的值 { if(j>=tim[i]) dp[j]=max(dp[j],dp[j-tim[i]]+v[i]); } } cout<<dp[t]; }