#5371. Phân chia tập hợp (Mã bài: SUBSETS)

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho một mảng số nguyên a gồm n phần tử và một số nguyên k . Trả về true nếu có thể chia mảng thành k tập con không rỗng có tổng bằng nhau.

Dữ liệu:

  • Dòng đầu chứa n k ;
  • Dòng sau chứa n số nguyên a_1, a_2, \ldots, a_n .

Kết quả: true hoặc false.

Ví dụ:

Dữ liệu:

7 4
4 3 2 3 5 2 1

Kết quả:

true

Giải thích: Tổng của mảng là 20. Cần chia thành 4 tập con có tổng là 5. Có thể chia thành: (5), (1, 4), (2, 3), (2, 3).

Gợi ý: Bài toán này có thể được giải quyết hiệu quả bằng đệ quy quay lui kết hợp với bitmask để theo dõi các phần tử đã được sử dụng.

Giới hạn:

  • 1 \le k \le n \le 16 .
  • 1 \le a_i \le 10^4 , tổng các phần tử của a chia hết cho k .