강도 사건

시간 제한3초메모리 제한128 MB

요약
k번 상자에 정확히 k개의 동일한 다이아몬드가 있을 때, 무게 한도 M을 넘지 않게 골라 총 가치를 최대화하는 배낭 문제를 풉니다.
난이도

보통10점 중 6점

유형
동적 계획법, 조합론, 그리디
정답자
아직 제출이 없습니다

문제

부쿠레슈티 시내에는 아주 큰 금고를 갖춘 아주 큰 은행이 있다. 금고 안에는 1번부터 NN번까지 번호가 매겨진 아주 큰 상자 NN개가 있다. kk번 상자 안에는 아주 큰 다이아몬드가 정확히 kk개 들어 있으며, 그 상자에 있는 다이아몬드는 모두 무게가 WkW_k, 값어치가 CkC_k이다.

지금 John과 Brus가 금고 안에 있다. 그들은 모든 것을 훔치고 싶지만, 안타깝게도 무게의 합이 MM을 넘지 않는 만큼만 다이아몬드를 들고 나올 수 있다.

kk번 상자에서는 0개부터 최대 kk개까지 원하는 만큼 다이아몬드를 가져갈 수 있다. 무게의 합이 MM 이하이면서 값어치의 합이 최대가 되도록 다이아몬드를 고르는 것을 도와주어라.

입력

첫째 줄에는 정수 TT — 테스트 케이스의 수가 주어진다. 각 테스트 케이스는 공백 하나로 구분된 두 정수 NN과 MM이 있는 줄로 시작한다. 다음 줄에는 NN개의 정수 WkW_k가 공백 하나로 구분되어 주어진다. 그다음 줄에는 NN개의 정수 CkC_k가 공백 하나로 구분되어 주어진다.

출력

각 테스트 케이스마다, 훔칠 수 있는 다이아몬드 값어치 합의 최댓값을 한 줄에 출력한다.

제한

  • 1≤T≤741 \le T \le 74
  • 1≤N≤151 \le N \le 15
  • 1≤M≤1091 \le M \le 10^9
  • 1≤Wk,Ck≤1091 \le W_k, C_k \le 10^9

예제1

  1. 예제 1

    입력
    2
    2 4
    3 2
    5 3
    3 100
    4 7 1
    5 9 2
    
    예상 출력
    6
    29