trang chủ / bài tập / ancchain

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ố 1 và trọng số 0. Gọi cnt là số đỉnh hiện có của cây (ban đầu cnt=1). Cây luôn được coi là có gốc tại đỉnh 1.

Hãy xử lý Q truy vấn thuộc hai loại:

  • Loại 1 (tham số R, W): thêm một đỉnh mới mang chỉ số cnt+1 với trọng số W, và nối một cạnh giữa đỉnh R và đỉnh mới này.
  • Loại 2 (tham số R, X): in ra độ dài lớn nhất của một dãy đỉnh v1,v2,,vk thoả mãn đồng thời:
    1. v1=R;
    2. mỗi đỉnh trong dãy là tổ tiên của đỉnh đứng ngay trước nó, tức vt+1 là tổ tiên của vt;
    3. tổng trọng số các đỉnh trong dãy không vượt quá X;
    4. với mọi cặp đỉnh liên tiếp vtvt+1 ta có w[vt+1]w[vt], đồng thời không tồn tại đỉnh nào nằm thực sự giữa vtvt+1 trên đường đi đơn nối chúng mà có trọng số w[vt].

Dãy rỗng (k=0) luôn hợp lệ, nên đáp án của truy vấn loại 2 có thể bằng 0.

Các truy vấn được đưa ra ở dạng mã hoá. Gọi last là đáp án của truy vấn loại 2 gần nhất đã in ra, ban đầu last=0.

Dữ liệu vào

  • Dòng đầu chứa số nguyên Q: số truy vấn.
  • Mỗi dòng trong Q dòng tiếp theo có dạng type p q:
    • 1 p q: truy vấn loại 1 với R=plastW=qlast.
    • 2 p q: truy vấn loại 2 với R=plastX=qlast.

Ở đâ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

  • 1Q400000
  • 0p,q1018
  • Dữ liệu đảm bảo 1Rcnt, 0W1090X1015.
  • 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 2 trọng số 1 vào đỉnh 1; hỏi (R,X)=(2,0) cho 0w[2]=1>0; hỏi (2,1) cho dãy {2}; với last=1, dòng 1 3 0 là thêm đỉnh 3 trọng số 1 vào đỉnh 2; dòng 2 2 0 là hỏi (3,1) cho dãy {3}; dòng cuối là hỏi (3,3) cho dãy {3,2} với tổng 23.
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ố 0, 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 2 và cho dãy {2,1}; sau khi thêm đỉnh 3 vào đỉnh 2, truy vấn kế hỏi tại đỉnh 3 và cho dãy {3,2,1}; truy vấn cuối hỏi lại tại đỉnh 2.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 csc 6.12.0.200 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 kotlinc 2.4.10 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0