trang chủ / đề bài / stripebst

Cây tìm kiếm nhị phân sọc

Đề bài

Mô tả

Một cây tìm kiếm nhị phân là cây nhị phân có gốc, mỗi đỉnh lưu một khóa và có tối đa hai cây con: cây con trái và cây con phải. Khóa tại mỗi đỉnh phải lớn hơn mọi khóa trong cây con trái và nhỏ hơn mọi khóa trong cây con phải của nó.

Độ sâu của một đỉnh là số cạnh trên đường đi đơn từ đỉnh đó tới gốc; đặc biệt, độ sâu của gốc bằng 0.

Ta gọi một cây tìm kiếm nhị phân là cân bằng hoàn hảo nếu không tồn tại cây tìm kiếm nhị phân nào có cùng số đỉnh mà tổng độ sâu của các đỉnh nhỏ hơn thực sự.

Ta gọi một cây tìm kiếm nhị phân với khóa nguyên là sọc nếu với mọi đỉnh v, cả hai điều kiện sau đều thỏa mãn:

  • Nếu v có cây con trái với gốc là u thì khóa của v và khóa của u khác tính chẵn lẻ.
  • Nếu v có cây con phải với gốc là w thì khóa của v và khóa của w cùng tính chẵn lẻ.

Cho một số nguyên n. Hãy đếm số cây tìm kiếm nhị phân vừa cân bằng hoàn hảo vừa sọc, có n đỉnh với các khóa nguyên đôi một phân biệt nhận giá trị từ 1 đến n. In kết quả theo modulo 998244353.

Dữ liệu vào

Một dòng duy nhất chứa số nguyên n là số đỉnh cần có.

Dữ liệu ra

In ra một số nguyên duy nhất là số cây thỏa mãn, lấy phần dư khi chia cho 998244353.

Ràng buộc

  • 1≤n≤106

Ví dụ

Input Output Giải thích
4 1 Cây duy nhất thỏa mãn có gốc là 2, con trái của gốc là 1, con phải của gốc là 4, và con trái của 4 là 3. Kiểm tra: 2 và 1 khác chẵn lẻ, 2 và 4 cùng chẵn lẻ, 4 và 3 khác chẵn lẻ.
3 0 Cây cân bằng hoàn hảo duy nhất với 3 đỉnh có gốc là 2, hai con là 1 và 3. Con phải 3 khác tính chẵn lẻ với gốc 2 nên cây không sọc.
9 1 Cây duy nhất có gốc là 5; cây con trái gồm các khóa 1..4 với gốc 2 (con trái 1, con phải 4, con trái của 4 là 3); cây con phải gồm các khóa 6..9 với gốc 7 (con trái 6, con phải 9, con trái của 9 là 8).

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