#include<bits/stdc++.h>
using namespace std;
long long n,m,f[1000005],sum=0,g=0,w[1000005],v[1000005],c[1000005];
bool judge=false;
//¿¼ÂÇÒ»²¨¶þ½øÖƲð·Ö
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>w[i]>>v[i]>>c[i];
}
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++){
int p=1;
while(p<c[i]){
for(int j=m;j>=p*w[i];j--){
f[j]=max(f[j],f[j-p*w[i]]+v[i]*p);
}
c[i]-=p;
p=p<<1;
}
if(c[i]>0){
for(int j=m;j>=c[i]*w[i];j--){
f[j]=max(f[j],f[j-c[i]*w[i]]+v[i]*c[i]);
}
}
}
cout<<f[m]<<endl;
}
acwing 4. 多重背包问题 I
最新推荐文章于 2024-04-06 22:47:02 发布