#include<bits/stdc++.h> using namespace std; int w[3501],v[12881]; int dp[12881]; int main(){ int n,m; cin>>m>>n; for(int i=1;i<=n;i++){ cin>>w[i]>>v[i]; } for(int i=1;i<=n;i++){ for(int j=m;j>=w[i];j--){ dp[j]=max(dp[j],dp[j-w[i]]+v[i]); } } cout<<dp[m]; return 0; }

2 条评论

  • 排序版

    • #include<bits/stdc++.h>
      using namespace std;
      int w[3501],v[12881];
      int dp[12881];
      int main(){
          int n,m;
          cin>>m>>n;
          for(int i=1;i<=n;i++){
              cin>>w[i]>>v[i];
          }
          for(int i=1;i<=n;i++){
              for(int j=m;j>=w[i];j--){
                  dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
              }
          }
          cout<<dp[m]; 
          return 0; 
      }
      
      • 1