Nguồn: CSES
Xây dựng một hàm check(s) nhận vào một giá trị và kiểm tra xem có thể chia mảng thành
mảng con sao cho tổng của mỗi mảng con không vượt quá
hay không. Hàm duyệt mảng từ trái sang phải và tham lam chọn kích thước lớn nhất có thể cho mỗi mảng con.
Ta có thể giải bài toán một cách hiệu quả bằng cách kết hợp tìm kiếm nhị phân với hàm trên. Ta tìm giá trị lớn nhất sao cho không thể chia mảng thành các mảng con thỏa mãn điều kiện. Khi đó, đáp án của bài toán là
.
Thuật toán có độ phức tạp , trong đó
là đáp án lớn nhất có thể.
Bình luận