Đếm tập con tổng X
Xem dưới dạng PDF
Gửi bài giải
Điểm:
1
Giới hạn thời gian:
2.0s
Giới hạn bộ nhớ:
256M
đầu vào:
stdin
Đầu ra:
stdout
Kiểu bài tập
Cho mảng A gồm N số nguyên dương. Hãy đếm số lượng tập con có tổng đúng bằng X. (Tập rỗng có tổng bằng 0 — tính nếu X = 0.)
Với N ≤ 40, duyệt toàn bộ 2^N tập con là quá chậm. Sử dụng Meet in the Middle:
- Chia mảng làm 2 nửa, sinh tất cả tổng tập con của mỗi nửa và đếm tần số bằng hash map.
- Với mỗi tổng s ở nửa thứ nhất, tra hash map ở nửa thứ hai với key X - s.
Đầu vào
- Dòng đầu tiên chứa hai số nguyên N (1 ≤ N ≤ 40) và X (1 ≤ X ≤ 10^18).
- Dòng thứ hai chứa N số nguyên dương A_i (1 ≤ A_i ≤ 10^15).
Đầu ra
Số lượng tập con có tổng đúng bằng X.
Ví dụ
Input:
6 26
2 3 5 8 13 21
Output:
4
Giải thích
4 tập con: {2,3,21}, {5,21}, {5,8,13}, {2,3,8,13}.
Nhận xét