1 /* 2 连接:http://noi.openjudge.cn 3 易错点:递推的一个分支忘了写了。所以每一个下标组合都要处理到 4 5 */ 6 7 #include<iostream> 8 #include<cstring> 9 using namespace std; 10 const int MAXT=1005; 11 const int MAXM=105; 12 int dp[MAXM][MAXT]; 13 int ti[MAXM]; 14 int v[MAXM]; 15 int main() 16 { 17 int m,t; 18 cin>>t>>m; 19 for(int i=1;i<=m;i++) 20 { 21 cin>>ti[i]>>v[i]; 22 } 23 24 memset(dp,0,sizeof(dp)); 25 for(int i=1;i<=m;i++)//前i个草药 26 { 27 for(int j=0;j<=t;j++) 28 { 29 if(j>=ti[i]) 30 { 31 dp[i][j]=max(dp[i-1][j],dp[i-1][j-ti[i]]+v[i]); 32 } 33 else//这个分支漏掉了…… 34 { 35 dp[i][j]=dp[i-1][j]; 36 } 37 } 38 } 39 40 cout<<dp[m][t]<<endl; 41 return 0; 42 }
posted on
浙公网安备 33010602011771号