#include<bits/stdc++.h>
using namespace std;
#define MAX 1010
struct node{
int p,w;
}temp[MAX];
int dp[MAX];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(dp,0,sizeof dp);
int p,n;
int id=1;
scanf("%d %d",&p,&n);
for(int i=1;i<=n;i++)
{
int i_p,i_w,num;
scanf("%d %d %d",&i_p,&i_w,&num);
for(int j=1;j<=num;j<<=1)
{
temp[id].p=i_p*j;
temp[id].w=i_w*j;
id++;
num-=j;
}
if(num>0)
{
temp[id].p=i_p*num;
temp[id].w=i_w*num;
id++;
}
}
for(int i=1;i<id;i++)
{
for(int j=p;j>=temp[i].p;j--)
{
dp[j]=max(dp[j],dp[j-temp[i].p]+temp[i].w);
}
}
printf("%d\n",dp[p]);
}
}
hdu 2191
最新推荐文章于 2022-04-24 18:25:00 发布