Hướng dẫn giải của Tập hợp cân bằng
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.
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.
Lời giải: Tập hợp cân bằng
Hướng tiếp cận
Gặp nhau ở giữa (Meet in the middle): chia bò thành 2 nửa, liệt kê tất cả tập con của mỗi nửa.
Nhận xét quan trọng
- Tập con cân bằng ↔ tổng chẵn và tồn tại tập con với .
- Chia bò thành nửa trái (H bò) và nửa phải (H2 bò). Với mỗi cặp : cần tồn tại và sao cho .
- Tiền xử lý: với mỗi , tính tập hợp (sắp xếp để tìm kiếm nhị phân).
Thuật toán
- Với mỗi ( giá trị): liệt kê tất cả , lưu lsum vào mảng sắp xếp.
- Với mỗi : nếu lẻ → bỏ qua. Với mỗi , tìm kiếm nhị phân trong mảng của .
Độ phức tạp
- Thời gian: — chấp nhận được với .
- Bộ nhớ:
Bình luận