Editorial for Tập hợp đoạn
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Subtask 1: Ta ta đơn giản duyệt qua tất cả các cách lựa chọn tập hợp đoạn và kiểm tra điều kiện đề bài. Độ phức tạp: với là số lượng đoạn .
Subtask 2: Với , ta có thể xây dựng tập hợp bao gồm một đoạn có độ dài hoặc hai đoạn có độ dài . Duyệt qua tất cả các cách chọn tập hợp với độ phức tạp .
Subtask 3: Ta ưu tiên chọn một đoạn có độ dài hoặc hai đoạn có độ dài có giá trị chi phí lớn nhất. Sắp xếp các đoạn theo chi phí và tìm kết quả. Độ phức tạp: .
Subtask 4: Gọi chi phí của đoạn là . Quy hoạch động với trạng thái như sau:
Gọi (, ) là chi phí lớn nhất của tập hợp đoạn từ đến có tổng độ dài các đoạn bằng . Ta xây dựng công thức truy hồi sau:
với .
Công thức trên với ý nghĩa: Ta có thể lựa chọn giữa việc giữ nguyên trạng thái trước đó (không sử dụng đoạn kết thúc tại ) hoặc thêm một đoạn độ dài kết thúc tại vào tập hợp đã có. Đáp án của bài toán là .
Độ phức tạp: .
Subtask 5: Ta có thể biến đổi cách tính chi phí như sau:
Ngoài ra, khi tính , ta quay về so sánh giữa các giá trị . Các giá trị này được gọi là giá trị đường chéo khi biểu diễn thành một ma trận hai chiều. Các cặp chỉ số này có điểm chung là đều có cùng giá trị . Từ đó, cùng với cách biến đổi biểu thức chi phí ở trên, ta có thể duy trì kiểu kết hợp , , và .
Khi đó, để tính nếu lựa chọn thêm một đoạn độ dài , ta chỉ cần tìm giá trị lớn nhất trong số cách kết hợp trên.
Độ phức tạp:
Comments