trang chủ / đề bài / dhbb23_chl_11_c

Truy vấn trên cây

Đề bài

Mô tả

Cho một cây gồm n đỉnh, các đỉnh được đánh số từ 1 tới n, đỉnh 1 là gốc của cây. Trên mỗi đỉnh của cây lưu một số nguyên, ban đầu giá trị ở tất cả các đỉnh là 0. Bạn cần thực hiện q truy vấn thuộc một trong ba loại sau:

  1. add v k l: Ta thay đổi giá trị các đỉnh thuộc cây con gốc v theo quy tắc sau:

    • Giá trị của đỉnh v được cộng thêm k;
    • Giá trị các đỉnh là con trực tiếp của v được cộng thêm k−l;
    • Giá trị các đỉnh là con trực tiếp của con trực tiếp của v được cộng thêm k−2×l;
    • Giá trị các đỉnh là con trực tiếp của con trực tiếp của con trực tiếp của v được cộng thêm k−3×l;
    • ...

    Các thao tác được thực hiện cho đến các nút lá của cây con gốc v. Nói cách khác, mỗi đỉnh u thuộc cây con gốc v (kể cả v) được cộng thêm k−d×l, trong đó d là khoảng cách (số cạnh) từ v đến u.

  2. get v: Tính giá trị của đỉnh v.
  3. sum v: Tính tổng giá trị các đỉnh thuộc cây con gốc v.

Yêu cầu: In ra kết quả các truy vấn loại 2 và 3 theo mô đun 998244353.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên n (2≤n≤5×105) là số đỉnh của cây.
  • Dòng thứ hai chứa n−1 số nguyên p2,p3,…,pn (1≤pi≤i−1), trong đó pi là cha trực tiếp của đỉnh i.
  • Dòng thứ ba chứa số nguyên q (1≤q≤5×105) là số truy vấn cần thực hiện.
  • q dòng cuối cùng, mỗi dòng mô tả một truy vấn theo một trong ba định dạng add v k l, get v hoặc sum v (1≤v≤n và 0≤|k|,|l|≤2×109).

Các số trên cùng một dòng được ghi cách nhau bởi dấu cách.

Dữ liệu ra

Với mỗi truy vấn loại 2 và 3, theo thứ tự xuất hiện, in ra trên một dòng một số nguyên không âm là kết quả của truy vấn theo mô đun 998244353 (giá trị đúng có thể âm; khi đó in ra số dư không âm của nó khi chia cho 998244353).

Ràng buộc

  • 2≤n≤5×105, 1≤q≤5×105.
  • 1≤pi≤i−1.
  • 1≤v≤n, 0≤|k|,|l|≤2×109.

Subtasks

  • 30% số test: 1≤n,q≤7000.
  • 25% số test: mọi truy vấn loại 1 đều có l=0.
  • 25% số test khác: không có truy vấn loại 3.
  • 20% số test còn lại: không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
7
1 2 2 4 1 6
11
add 1 5 1
get 1
get 2
get 3
get 4
get 5
get 6
get 7
add 4 7 3
sum 2
sum 6
5
4
3
3
2
4
3
23
7
Sau truy vấn đầu, giá trị các đỉnh 1..7 là 5,4,3,3,2,4,3 (đỉnh ở độ sâu d nhận 5−d). Truy vấn add 4 7 3 cộng 7 vào đỉnh 4 và 4 vào đỉnh 5. Cây con gốc 2 gồm các đỉnh 2,3,4,5 có tổng 4+3+10+6=23; cây con gốc 6 gồm 6,7 có tổng 4+3=7.
5
1 1 2 2
7
add 2 -3 2
add 1 10 0
get 4
sum 2
add 2 2000000000 -2000000000
get 5
sum 1
5
17
7022593
17556507
Sau hai truy vấn đầu: đỉnh 2 có −3+10=7, đỉnh 4 và 5 có −5+10=5, cây con gốc 2 có tổng 17. Truy vấn thứ năm cộng 2×109 vào đỉnh 2 và 4×109 vào đỉnh 4,5; giá trị đỉnh 5 là 4000000005, theo mô đun là 7022593. Tổng cả cây là 1010+37, theo mô đun là 17556507.

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 dotnet 10.0.402 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.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0