Editorial for Clue Contest 05 - Phân chia nhiệm vụ
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Subtask 1: Sinh nhị phân (Brute Force, n ≤ 20)
Duyệt tất cả các tập con của mảng và tìm chênh lệch nhỏ nhất.
Subtask 2: Quy hoạch động (Knapsack DP, n ≤ 1000, tổng ≤ 10^5)
Ý tưởng
- Bài toán tương tự bài toán "Subset Sum", trong đó ta cần tìm một tập con có tổng gần nhất
S/2, vớiSlà tổng tất cả các phần tử. - Đây là bài toán Knapsack 0/1, có thể giải bằng quy hoạch động.
Subtask 3
Nhận xét: Nếu có ~2~ phần tử giống nhau trong mảng, ta có thể chia ~2~ phần tử đó vào ~2~ nhóm mà không làm ảnh hưởng đến kết quả.
Sau khi loại bỏ phần tử lặp, mảng sẽ còn lại tối đa ~2 \times \sqrt{S}~ số với ~S~ là tổng các phần tử trong mảng. Đến đây ta làm như Sub2
Độ phức tạp: O(~n \times \sqrt{n}~)
Comments