1 //01背包,详见背包九讲 2 #include<stdio.h> 3 #include<string.h> 4 typedef struct 5 { 6 int val,room; 7 } cus; 8 int an[1005]; 9 cus inf[1005]; 10 int main() 11 { 12 int n; 13 scanf("%d",&n); 14 while(n--) 15 { 16 memset(an,0,sizeof an); 17 memset(inf,0,sizeof inf); 18 int num,Room,ans=0; 19 scanf("%d%d",&num,&Room); 20 for(int i=0; i<num; ++i) 21 scanf("%d",&inf[i].val); 22 for(int i=0; i<num; ++i) 23 scanf("%d",&inf[i].room); 24 for(int i=0; i<num; ++i) 25 { 26 for(int j=inf[i].room; j<=Room; ++j) 27 { 28 int seet=j-inf[i].room; 29 int temp=an[j]+inf[i].val; 30 if(an[seet] < temp) 31 an[seet]=temp; 32 if(temp > ans) 33 ans=temp; 34 } 35 } 36 printf("%d ",ans); 37 } 38 return 0; 39 }