多重背包~~ O(V*Σlog n[i]) version ~~
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int cas,n,v,i,j,k,dp[101],val[101],vol[101],num[101];
scanf("%d",&cas);
while(cas --)
{
scanf("%d%d",&v,&n);
for(i = 0;i < n;i ++)
scanf("%d%d%d",&vol[i],&val[i],&num[i]);
for(i = 0;i < 101;i ++) dp[i] = 0;
for(i = 0;i < n;i ++)
for(j = 0;j < num[i];j ++)
for(k = v;k >= vol[i];k -- )
dp[k] = max(dp[k],dp[k - vol[i]] + val[i]);
printf("%d\n",dp[v]);
}
return 0;
}