Hướng dẫn giải của Clue Contest 05 - Phân chia nhiệm vụ


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Tác giả: giaminh2211

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ới S là 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}~)


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.