cpp-023Đọc toàn bộ đề miễn phí

Quy hoạch động bài toán Cái túi 0/1 tối ưu không gian

Máy chủ huấn luyện đồ họa AI của AI Empire Academy có tổng dung lượng bộ nhớ VRAM là C GB (1 ≤ C ≤ 104). Có N mô hình AI mã nguồn mở đang được xem xét để nạp vào bộ nhớ (1…

C++Trung bình35 phút

Tiến độ của tôi ở bài này

Điểm được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

dynamic programmingknapsackoptimization

Kiến thức tiên quyết: dynamic programming, std vector, loops.

Nội dung đề bài

Mục tiêu kiến thức

  • Hiểu sâu cấu trúc con tối ưu và phương trình trạng thái của bài toán Cái túi 0/1 (0/1 Knapsack).
  • Nâng cấp tối ưu hóa không gian bộ nhớ từ bảng 2 chiều O(N × C) xuống mảng 1 chiều O(C) bằng cách duyệt ngược dung lượng.
  • Phân tích độ phức tạp thời gian O(N × C) và không gian O(C).

Mô tả bài toán

Máy chủ huấn luyện đồ họa AI của AI Empire Academy có tổng dung lượng bộ nhớ VRAM là C GB (1 ≤ C ≤ 104). Có N mô hình AI mã nguồn mở đang được xem xét để nạp vào bộ nhớ (1 ≤ N ≤ 1000).

Mô hình thứ i cần chiếm một lượng bộ nhớ là Wi GB và mang lại giá trị hiệu năng tính toán là Vi điểm (1 ≤ Wi ≤ C, 1 ≤ Vi ≤ 109). Do tính chất độc lập, mỗi mô hình chỉ có thể được chọn tối đa một lần (0 hoặc 1).

Hãy tìm tổng giá trị hiệu năng lớn nhất có thể đạt được sao cho tổng dung lượng VRAM của các mô hình được chọn không vượt quá C.

Quy ước nộp bài

  • Chỉ cần viết một chương trình đọc stdin và in ra stdout. Bài này không yêu cầu viết hàm.
  • Không dùng cout để in lời nhắc trước khi đọc dữ liệu. Lời nhắc sẽ lọt vào stdout và làm bài sai.
  • Chỉ in đúng nội dung ở mục Output. Không in thêm nhãn, dòng trống hay ký tự thừa.
  • Output được so khớp từng ký tự, phân biệt chữ hoa/thường và dấu câu.

Input

  • Dòng 1: Gồm 2 số nguyên N và C (1 ≤ N ≤ 1000, 1 ≤ C ≤ 104).
  • N dòng tiếp theo: Mỗi dòng gồm 2 số nguyên Wi, Vi (1 ≤ Wi ≤ C, 1 ≤ Vi ≤ 109) đại diện cho dung lượng và giá trị của mô hình thứ i.

Output

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

Ràng buộc

  • 1 ≤ N ≤ 1000.
  • 1 ≤ C ≤ 104.
  • 1 ≤ Wi ≤ C.
  • 1 ≤ Vi ≤ 109.
  • Thời gian chạy: 1000ms.
  • Bộ nhớ tối đa: 256MB.

Ví dụ 1

Input

4 10
5 10
4 40
6 30
3 50

Output

90

Giải thích

Ta chọn mô hình 2 (W2 = 4, V2 = 40) và mô hình 4 (W4 = 3, V4 = 50). Tổng dung lượng chiếm: 4 + 3 = 7 ≤ 10 GB. Tổng giá trị đạt được: 40 + 50 = 90 điểm (đây là giá trị lớn nhất có thể).

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.