Dãy tổ tiên trên cây
Đề bài
Mô tả
Ban đầu ta có một cây chỉ gồm một đỉnh mang chỉ số và trọng số . Gọi là số đỉnh hiện có của cây (ban đầu ). Cây luôn được coi là có gốc tại đỉnh .
Hãy xử lý truy vấn thuộc hai loại:
- Loại 1 (tham số , ): thêm một đỉnh mới mang chỉ số với trọng số , và nối một cạnh giữa đỉnh và đỉnh mới này.
- Loại 2 (tham số , ): in ra độ dài lớn nhất của một dãy đỉnh thoả mãn đồng thời:
- ;
- mỗi đỉnh trong dãy là tổ tiên của đỉnh đứng ngay trước nó, tức là tổ tiên của ;
- tổng trọng số các đỉnh trong dãy không vượt quá ;
- với mọi cặp đỉnh liên tiếp và ta có , đồng thời không tồn tại đỉnh nào nằm thực sự giữa và trên đường đi đơn nối chúng mà có trọng số .
Dãy rỗng () luôn hợp lệ, nên đáp án của truy vấn loại 2 có thể bằng .
Các truy vấn được đưa ra ở dạng mã hoá. Gọi là đáp án của truy vấn loại 2 gần nhất đã in ra, ban đầu .
Dữ liệu vào
- Dòng đầu chứa số nguyên : số truy vấn.
- Mỗi dòng trong dòng tiếp theo có dạng
type p q:1 p q: truy vấn loại 1 với và .2 p q: truy vấn loại 2 với và .
Ở đây là phép XOR trên bit.
Dữ liệu ra
Với mỗi truy vấn loại 2, in ra đáp án trên một dòng riêng.
Ràng buộc
- Dữ liệu đảm bảo , và .
- Dữ liệu đảm bảo có ít nhất một truy vấn loại 2.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 6 1 1 1 2 2 0 2 2 1 1 3 0 2 2 0 2 2 2 |
0 1 1 2 |
Giải mã lần lượt: thêm đỉnh trọng số vào đỉnh ; hỏi cho vì ; hỏi cho dãy ; với , dòng 1 3 0 là thêm đỉnh trọng số vào đỉnh ; dòng 2 2 0 là hỏi cho dãy ; dòng cuối là hỏi cho dãy với tổng . |
| 6 1 1 0 2 2 0 2 0 3 1 0 2 2 1 3 2 1 6 |
2 2 3 2 |
Mọi đỉnh được thêm đều có trọng số , nên từ một đỉnh bất kì dãy có thể đi thẳng lên tới gốc. Hai truy vấn đầu đều hỏi tại đỉnh và cho dãy ; sau khi thêm đỉnh vào đỉnh , truy vấn kế hỏi tại đỉnh và cho dãy ; truy vấn cuối hỏi lại tại đỉnh . |
Bình luận