Đếm số cây nhị phân tìm kiếm theo chiều cao

Đề bài

Mô tả

Một cây nhị phân tìm kiếm (BST) là một cây nhị phân, trong đó mỗi nút mang một khóa khác nhau và thỏa mãn tính chất: với mỗi nút, mọi khóa trong cây con trái đều nhỏ hơn khóa của nút đó, và mọi khóa trong cây con phải đều lớn hơn khóa của nút đó. Mỗi nút có không quá hai con.

Cho hai số nguyên dương nh. Hãy đếm số lượng cây nhị phân tìm kiếm khác nhau chứa đúng n nút với các khóa là các số nguyên phân biệt từ 1 đến n, sao cho chiều cao của cây không nhỏ hơn h.

Trong bài này, chiều cao của cây được định nghĩa là số nút lớn nhất trên một đường đi từ gốc xuống một lá nào đó, tính cả nút gốc và nút lá. (Nói cách khác, một cây chỉ có một nút có chiều cao bằng 1.)

Dữ liệu vào

Một dòng duy nhất chứa hai số nguyên dương nh cách nhau bởi dấu cách.

Dữ liệu ra

Một số nguyên duy nhất — số lượng cây nhị phân tìm kiếm thỏa mãn yêu cầu. Đảm bảo kết quả không vượt quá 9·1018.

Ràng buộc

  • 1hn35.

Ví dụ

Input Output Giải thích
3 2 5 5 cây BST với 3 nút (số Catalan C3=5), tất cả đều có chiều cao 2.
3 3 4 5 cây BST với 3 nút; chỉ duy nhất một cây cân bằng (gốc là 2, hai con là 13) có chiều cao 2. Còn lại 4 cây có chiều cao 3.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0