30分代码(开氧优化50)如下,如有大佬愿意指点一二,小生定感激不尽!
#include<bits/stdc++.h>
using namespace std;
int n,weight,v[100001],w[100001],m,num=0,ans[1000086];
void input(){
int i=1;
cin>>n>>weight;
while(cin>>w[i]>>v[i]>>m){
num+=m;
for(int j=1;j<m;j++){
i++;
v[i]=v[i-j];
w[i]=w[i-j];
}
i++;
}
}
void sub(){
for(int i=1;i<=num;i++){
for(int j=weight;j>=v[i];j--){
ans[j]=max(ans[j],ans[j-v[i]]+w[i]);
}
}
cout<<ans[weight];
}
int main(){
input();
sub();
return 0;
}