trang chủ / đề bài / knapunbound

Ba Lô Không Giới Hạn

Đề bài

Mô tả

Cho N loại vật. Loại vật thứ i có khối lượng wi và giá trị vi. Bạn có một chiếc ba lô sức chứa W (tổng khối lượng các vật đem theo không được vượt quá W).

Với mỗi loại vật, bạn được lấy số lượng không giới hạn (có thể lấy 0, 1, 2, … vật cùng loại). Hãy tìm tổng giá trị lớn nhất có thể nhét vào ba lô.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên N và W — số loại vật và sức chứa ba lô.
  • N dòng tiếp theo, mỗi dòng chứa hai số nguyên wi và vi — khối lượng và giá trị của loại vật thứ i.

Dữ liệu ra

In ra một số nguyên duy nhất: tổng giá trị lớn nhất có thể đạt được.

Ràng buộc

  • 1≤N≤100
  • 1≤W≤105
  • 1≤wi≤W
  • 1≤vi≤109

Ví dụ

Input Output Giải thích
3 10
2 3
3 4
4 5
15 Lấy 5 vật loại 1 (khối lượng 2·5=10, giá trị 3·5=15).
2 12
5 9
6 10
20 Lấy 2 vật loại 2 (khối lượng 6·2=12, giá trị 10·2=20). Nếu lấy 2 vật loại 1 chỉ được giá trị 18.

Ghi chú

Với ví dụ 2, chiến lược "chọn loại có tỷ số giá trị/khối lượng cao nhất" sẽ chọn loại 1 (tỷ số 9/5=1.8>10/6≈1.67), nhưng cách làm này không tối ưu vì để lại 2 đơn vị khối lượng thừa.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0