Tính tổng lớn nhất trong mảng sao cho khoảng cách giữa các chỉ số không quá k

Cho minh hỏi cách tìm tổng lớn nhất trong mảng sao cho khoảng cách giữa các chỉ số <= k.
(Cách nhanh : Chặt nhị phân) Cách trâu thì mình đã biết r
VD
INPUT
n = 4, k = 3;
1 6 4 2 3
OUTPUT 9
cảm ơn

Ồ, 2 bạn học cùng lớp à?

1 Like

Chào bạn,
Đây là giải theo cách mình hiểu do cái test của bạn ví dụ nó ảo quá mình không tài nào hiểu nổi.

Bây giờ ta gọi F[i] là cách tìm tổng lớn nhất kết thúc tại vị trí i.
Ta có: F[i] = max(F[i -1], F[i - 2], ..., F[i - k]) + a[i];
Bây giờ vậy của bạn là tối ưu đoạn tìm max.
Đoạn này có thể dùng dequeue để tối ưu.
Bạn tham khảo bài toán này: https://vn.spoj.com/problems/MINK/
ĐPT: O (n)

4 Likes

Bài đó là điểm trên trục Ox mà :smiley:

dequeue. Chỉ cần một circular buffer thay vì include.

5 Likes

Ohh sorry e lại ẩu rồi. Đoạn này đúng là dùng dequeue để tối ưu.
E đã fix. Thanks a nhiều :3

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?