Sum over subset Dynamic Programing

Xem dạng PDF

Gửi bài giải

Điểm: 150,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Python
Sum over subset Dynamic Programing
Mô tả và yêu cầu

Cho một mảng 𝐴 cố định gồm 2𝑛 số nguyên 𝐴0, 𝐴1 … ,𝐴2𝑛−1. Gọi 𝑖 là tập con của 𝑥
nếu 𝑥 & 𝑖 = 𝑖.
Yêu cầu: ∀𝑥 = 0..2𝑛 − 1 tính hàm 𝐹 (𝑥) = Tổng của tất cả 𝐴[𝑖] sao cho 𝑖 là tập con
của 𝑥, cụ thể:
𝐹[𝑥] = ∑𝑖 & 𝑥=𝑖 𝐴[𝑖] với 𝑥 = 0..2𝑛 − 1.

Dữ liệu vào

- Dòng đầu chứa số nguyên dương 𝑛 (𝑛 ≤ 20)
- Dòng tiếp theo chứa 2𝑛 số nguyên 𝐴0, 𝐴1 … ,𝐴2𝑛−1 (−109 ≤ 𝐴𝑖 ≤ 109).
Kết quả ra:
Ghi 1 dòng chứa 2𝑛 số nguyên, số nguyên thứ 𝑖 là 𝐹[𝑖] tương ứng.

Ví dụ
INPUT                        OUTPUT
                   3                             1 3 4 10 6 14 16 36
                   1 2 3 4 5 6 7 8
Giải thích: Ta có:
𝐹[0]  = 𝐴0= 1
𝐹[1]  = 𝐴0  +  𝐴1 =  1 +  2 =  3  (vì 0=002, 1=012 là tập con của 1= 012)
𝐹[2]  = 𝐴0  +  𝐴2 =  1 +  3 =  4 (vì 0=002, 2=102 là tập con của 2=102)
𝐹[3]  = 𝐴0  +  𝐴1 +  𝐴2 +  𝐴3  =  1 +  1 + 3  + 4  = 10 (vì 0  =  002, 1  =  012, 2 =  102,
               3 =  112là tập con của 3    =  112)
…
𝐹[7]  = 𝐴0  +  𝐴1 +  𝐴2 +  𝐴3  + 𝐴4  +  𝐴5 +  𝐴6  + 𝐴7  =  1 +  2 + 3  + 4 +  5 +  6 +  7 +
8 =  36 (vì 0 =  0002,  1 =  0012,  2 =  0102,   3 =  0112,  4 =  1002,  5 =  1012,  6 =
1102, 7  = 1112 là tập con của 7=1112)

Tải PDF gốc


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.