多重背包基础题
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <queue>
#include <stack>
using namespace std;
#define N 100
#define INF 25000005
int weight[N],price[N],cnt[N];
int dp[N*20];
int main(){
int T;scanf("%d",&T);
while(T--){
memset(dp,0,sizeof(dp));
int n,m;scanf("%d%d",&n,&m);
for(int i=0;i<m;i++) scanf("%d%d%d",&price[i],&weight[i],&cnt[i]);
for(int i=0;i<m;i++)
for(int j=0;j<cnt[i];j++)
for(int k=n;k>=price[i];k--)
dp[k]=max(dp[k],dp[k-price[i]]+weight[i]);
printf("%d\n",dp[n]);
}//while
return 0;
}//main