Menu
CoddyTech

Book Allocation Problem

Một kệ sách chứa các quyển sách theo thứ tự cố định, và pages[i] là số trang của quyển sách i. Hãy chia sách cho students học sinh: mỗi học sinh nhận một dãy sách liền kề không bị ngắt quãng, mỗi người nhận ít nhất một quyển và mỗi quyển được giao cho đúng một học sinh. Khối lượng sách của một học sinh là tổng số trang mà bạn ấy nhận.

Trả về giá trị nhỏ nhất có thể của khối lượng sách lớn nhất. Nếu số học sinh nhiều hơn số quyển sách, hãy trả về -1.

Hàm

allocateBooks(pages: integer-array, students: integer) → integer
pagesinteger-array
số trang của từng cuốn sách, theo thứ tự trên kệ
studentsinteger
số học sinh chia sẻ sách
Trả vềinteger
tải trọng lớn nhất nhỏ nhất có thể, hoặc -1 khi số học sinh nhiều hơn số sách

Ràng buộc

  • 1 ≤ pages.length ≤ 5000
  • 1 ≤ pages[i] ≤ 105
  • 1 ≤ students ≤ 104
  • Trả về -1 khi students > pages.length.

Ví dụ

Đầu vào
pages = [25, 40, 15, 30, 50]students = 3
Đầu ra
65
Giải thích
Phát [25, 40], [15, 30] và [50]: tổng lần lượt là 65, 45 và 50. Giới hạn 64 không đáp ứng được: cách phát sẽ là [25], [40, 15], [30], [50], cho bốn học sinh.
challenge icon

Câu hỏi mở rộng

Chứng minh rằng giá trị trung bình của số sách, làm tròn lên, cộng với cuốn sách dày nhất luôn là một giới hạn khả thi. Giới hạn trên này giúp tiết kiệm bao nhiêu lần kiểm tra khi xếp một kệ sách mỏng?

Đặt lại code
def allocateBooks(pages, students):
    # Viết code tại đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

pages = [25, 40, 15, 30, 50]
students = 3

Đầu ra mong đợi

65