#include<bits/stdc++.h>
using namespace std;
int n,m;
int f[105];
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        int v,w,s;
        cin>>v>>w>>s;
        for(int k=1;k<=s;k++){
            for(int j=m;j>=v;j--){
                f[j]=max(f[j],f[j-v]+w);

            }
        }
    }
    cout<<f[m];
    return 0;
}

3 条评论

  • 
    ```cpp
    #include<bits/stdc++.h>
    using namespace std;
    int v,n,t;
    int f[210];
    struct node{
        int w,c;
    };
    vector<node> a[20];
    int main(){
        cin>>v>>n>>t;
        for(int i=1;i<=n;i++){
            int w,c,p;
            cin>>w>>c>>p;
            a[p].push_back({w,c});
        }
        for(int i=1;i<=t;i++){
            for(int j=v;j>=1;j--){
                for(auto g:a[i]){
                    if(j>=g.w){
                        f[j]=max(f[j],f[j-g.w]+g.c);
                    }
                }
            }
        }
        cout<<f[v];
        return 0;
    }
    
    • #include<bits/stdc++.h>
      using namespace std;
      int f[2005],a[20005],b[20005],n,m,k;
      int main(){
          cin>>n>>m;
          for(int i=1;i<=n;i++){
              int v,w,s;
              cin>>v>>w>>s;
              for(int j=1;j<=s;j*=2){
                  k++;
                  a[k]=j*v;
                  b[k]=j*w;
                  s-=j;
      
              }
              if(s){
                  k++;
                  a[k]=s*v;
                  b[k]=s*w;
                  s=0;
              }
          }
          for(int i=1;i<=k;i++){
              for(int j=m;j>=a[i];j--){
                  f[j]=max(f[j],f[j-a[i]]+b[i]);
              }
          }
          cout<<f[m];
          return 0;
      }
      
      • @ 2026-10-17 9:20:27

        1111

        • 1