#include<stdio.h>
#include<string.h>
struct node
{
int v,t;
}a[333];
int Max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int n,t,dp[144][1111],i,j,k,m,time;
scanf("%d",&t);
while(t--){
scanf("%d%d%d",&n,&m,&time);
for(i=0;i<n;i++)
scanf("%d%d",&a[i].t,&a[i].v);
memset(dp,-1,sizeof(dp));//因为要拿满m个所以需要初始化-1 dp[0]初始化0;
memset(dp[0],0,sizeof(dp)); // 因为不需要看满time 时间 所以把dp[0]初始化为0;
for(i=0;i<n;i++){
for(j=m;j>=1;j--){
for(k=time;k>=a[i].t;k--){
if(dp[j-1][k-a[i].t]==-1) break;
dp[j][k]=Max(dp[j][k],dp[j-1][k-a[i].t]+a[i].v);
}
}
}
if(dp[m][time]==-1)
printf("0\n");
else
printf("%d\n",dp[m][time]);
}
return 0;
}
HDU 3496 Watch The Movie 二维背包
最新推荐文章于 2021-02-07 11:06:21 发布