trang chủ / đề bài / treedepth

Độ Sâu Cây

Đề bài

Mô tả

Cho một hoán vị a={a1,a2,…,aN} của 1,2,…,N, ta xây dựng một cây BST như sau:

generate(l, r):
  nếu l > r, trả về cây rỗng;
  x = argmin_{l ≤ i ≤ r} a_i;  // chỉ số của phần tử nhỏ nhất trong a_l..a_r
  trả về BST với x là gốc,
         generate(l, x-1) là cây con trái,
         generate(x+1, r) là cây con phải;

Gọi di(a) là độ sâu của nút i trong cây tương ứng với a (số nút trên đường từ ai đến gốc). Số nghịch thế của a là số cặp (i,j) với i<j và ai>aj.

Biết rằng a có đúng K nghịch thế, hãy tính ∑adi(a)(modM) với mỗi 1≤i≤N, tổng lấy trên tất cả các hoán vị a thỏa mãn điều kiện.

Dữ liệu vào

Một dòng duy nhất gồm ba số nguyên N, K, M.

  • 1≤N≤300
  • 0≤K≤N(N−1)2
  • M là số nguyên tố, 108≤M≤109+9

Dữ liệu ra

In N số nguyên cách nhau bởi dấu cách — giá trị ∑adi(a)(modM) với i=1,2,…,N.

Ví dụ

Input Output Giải thích
3 0 192603497 1 2 3 Hoán vị duy nhất là {1,2,3}: BST có gốc 1, con phải 2, cháu phải 3. d1=1,d2=2,d3=3.
3 1 144408983 3 4 4 Hai hoán vị: {1,3,2} cho (d1,d2,d3)=(1,3,2); {2,1,3} cho (2,1,2). Tổng: (3,4,4).

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