#include <bits/stdc++.h>
using namespace std;
const int N=50005;
int n,nn,V,w[N],v[N],dp[N][6005];
int main(){
    ios::sync_with_stdio(false);
    cin>>n>>V;
    for(int i=1;i<=n;i++){
        int t=1,x,y,s;
        cin>>x>>y>>s;
        while(s>=t){
            w[++nn]=t*x;
            v[nn]=t*y;
            s-=t;
            t*=2;
        }
        if(!s)continue;
        w[++nn]=t*x;
        v[nn]=t*y;
    }
    for(int j=w[1];j<=V;j++)dp[1][j]=v[1];
    for(int i=2;i<=nn;i++){
        for(int j=0;j<=V;j++){
            if(j<w[i])dp[i][j]=dp[i-1][j];
            else dp[i][j]=max(dp[i-1][j-w[i]]+v[i],dp[i-1][j]);
        }
    }
    cout<<dp[nn][V];
    return 0;
}
//ans=max({a,b,c,d})

0 条评论

目前还没有评论...

信息

ID
2801
难度
6
分类
(无)
标签
递交数
29
已通过
9
通过率
31%
上传者