[Buổi 22][Cây đoạn cơ bản (Segment Tree)][HW] Bài 3: Mạch gộp OR/XOR nhiều tầng
Mạch gộp OR/XOR nhiều tầng
Bối cảnh và bài toán
Một mạch tổng hợp nhận 2^n tín hiệu ở tầng lá. Tầng đầu gộp từng cặp bằng OR, tầng kế tiếp bằng XOR, rồi tiếp tục luân phiên cho tới khi còn một giá trị ở gốc. Sau mỗi lần thay đổi một tín hiệu đầu vào, cần xuất giá trị tại gốc.
Yêu cầu
Sau mỗi cập nhật điểm, tính giá trị tổng hợp ở gốc của cây nhị phân đầy đủ.
Input
- Dòng 1 chứa
n m. - Dòng 2 chứa
2^nsố ban đầu. mdòng tiếp theo chứap b: gán vị trípbằngb.
Output
Sau mỗi cập nhật, in giá trị tại gốc.
Ràng buộc
1 <= n <= 171 <= m <= 10^50 <= a[i], b < 2^301 <= p <= 2^n
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 20% | n <= 4, m <= 30 | 01–04 |
| S2 | 30% | n <= 12, m <= 5000 | 05–10 |
| S3 | 50% | Không có ràng buộc bổ sung | 11–20 |
Ví dụ 1
Input
2 3
1 6 3 5
1 4
3 4
1 2
Output
1
3
3
Giải thích. Với n=2, tầng lá gộp OR rồi tầng gốc gộp XOR.
Ví dụ 2
Input
1 2
5 2
2 7
1 0
Output
7
7
Giải thích. Khi n=1, gốc chỉ là OR của hai lá.
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M07-B22-HW03 |
| Buổi | B22 |
| Loại bài | HOMEWORK |
| Mức độ khó | Trung bình (Medium) |
| Thời gian làm bài khuyến nghị | 45 phút |
| Time limit | 2 giây |
| Memory limit | 256 MB |
| Tổng điểm | 100 |
| Chuẩn ngôn ngữ tham chiếu | C++11 trở lên |
Nguồn: Phỏng theo Codeforces 339D – Xenia and Bit Operations.
Comments