求助
查看原帖
求助
1101201
Wang_xin_chen楼主2024/7/31 20:16
#include<bits/stdc++.h>
using namespace std;
int n,wi,W,ui,vi,w[100000],mi,k=0,dp[100005],v[1000005];
int main(){
    cin>>n>>W;
    for(int i=1;i<=n;i++){
        cin>>vi>>wi>>mi;
        int t=1;
        while(t<=mi){
            k++;
            w[k]=t*wi;
            v[k]=t*vi;
            mi-=t;
            t*=2;
        }
        if(mi>0){
            k++;
            w[k]=ui*mi;
            v[k]=vi*mi;
        }
    }
    for(int i=1;i<=k;i++){ 
        for(int j=W;j>=w[i];j--){
            dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
        }
    }
    cout<<dp[W];
    return 0;
}
2024/7/31 20:16
加载中...