题好水,30分TLE的代码,开O2优化就AC了
#include<iostream>
using namespace std;
/*
4 20
3 9 3
5 9 1
9 4 2
8 1 3
*/
int dp[10001];
int w[10001];
int v[10001];
int n,m,ww,vv,q;
int main()
{
cin>>n>>m;
int t=0;
int tt;
for(int i=1;i<=n;i++)
{
cin>>vv>>ww>>q;
tt=min(q,m/ww+1);
for(int j=1;j<=tt;j++)
{
t++;
w[t]=ww;
v[t]=vv;
}
}
n=t;
for(int i=1;i<=n;i++)
{
for(int j=m;j>=w[i];j--)
{
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
}
cout<<dp[m];
return 0;
}