某群里有人吼是0/1背包,就去看了一下,果然很裸,顺便就A了。
#include <stdio.h>
#include <string.h>
#define MAXN 1005
int c[MAXN], vol[MAXN], val[MAXN];
int main()
{
int t, N, V;
scanf("%d", &t);
while(t--)
{
scanf("%d %d", &N, &V);
for(int i = 0; i < N; i++)
scanf("%d", &val[i]);
for(int i = 0; i < N; i++)
scanf("%d", &vol[i]);
memset(c, 0, sizeof(c));
for(int i = 0; i < N; i++)
{
for(int j = V; j >= vol[i]; j--)
{
if(c[j] < c[j - vol[i]] + val[i])
c[j] = c[j - vol[i]] + val[i];
}
}
printf("%d\n", c[V]);
}
return 0;
}