using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Main
{
class Program
{
static void Main(string[] args)
{
int[,] map = new int[1005, 1005];
int[] Bvalue = new int[1005];
int[] Bvolume = new int[1005];
string cin,cin2;
string[] sp,sp2;
int number, volume;
int round = Convert.ToInt32(Console.ReadLine());
while (round-- != 0)
{
cin = Console.ReadLine();
sp = cin.Split(' ');
number = Convert.ToInt32(sp[0]);
volume = Convert.ToInt32(sp[1]);
cin = Console.ReadLine();
cin2 = Console.ReadLine();
sp = cin.Split(' ');
sp2 = cin2.Split(' ');
for (int i = 1; i <= number; ++i)
{
Bvalue[i] = Convert.ToInt32(sp[i - 1]);
Bvolume[i] = Convert.ToInt32(sp2[i - 1]);
}
for (int i = 0; i < 1002; ++i)
{
map[i, 0] = 0;
}
for (int i = 1; i <= number; ++i)
{
for (int j = 0; j <= volume; ++j) //题目默认volume为0时value可以不为0,所以必须j=0开始
{
map[i, j] = map[i - 1, j];
if (j >= Bvolume[i])
map[i, j] = map[i - 1, j] > map[i - 1, j - Bvolume[i]] + Bvalue[i] ?
map[i - 1, j] : map[i - 1, j - Bvolume[i]] + Bvalue[i];
}
}
Console.WriteLine(map[number, volume]);
}
}
}
}
20200516 | 2017-03-22 17:18:12 | Accepted | 2602 | 187MS | 17812K | 1811 B | C# | harrypoirot |