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++;
}
/*
for(int j=0;j<i;j++){
cout<<v[j]<<" "<<w[j]<<endl;
}
cout<<num<<endl;
*/
}
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]);
}
/*
for(int j=1;j<=weight+1;j++){
cout<<ans[j]<<" ";
}
cout<<endl;
*/
}
cout<<ans[weight];
}
int main(){
input();
sub();
return 0;
}