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

Đếm Kiện Cỏ Khô

Đề bài

Mô tả

Cho N cọc có chiều cao h1,h2,,hN. Bạn có thể thực hiện một loại thao tác: nếu hai cọc liền kề có chiều cao chênh nhau đúng 1, hãy chuyển một đơn vị từ cọc cao hơn sang cọc thấp hơn (tức là giảm chiều cao cọc cao đi 1 và tăng chiều cao cọc thấp lên 1).

Hãy đếm số cấu hình (h1,h2,,hN) phân biệt có thể đạt được sau khi thực hiện các thao tác trên một số lần tùy ý (có thể không thực hiện), kể cả cấu hình ban đầu. Kết quả lấy modulo 109+7.

Dữ liệu vào

Dòng đầu tiên chứa số nguyên T — số lượng test case.

Mỗi test case gồm hai dòng:

  • Dòng đầu: số nguyên N.
  • Dòng thứ hai: N số nguyên h1,h2,,hN.

Dữ liệu ra

In ra T dòng, mỗi dòng chứa số cấu hình có thể đạt được của test case tương ứng, modulo 109+7.

Ràng buộc

  • 1T10
  • 1N5000
  • 1hi109
  • Tổng N qua tất cả các test case không vượt quá 5000

Ví dụ

Input Output Giải thích
7
4
2 2 2 3
4
3 3 1 2
4
5 3 4 2
6
3 3 1 1 2 2
6
1 3 3 4 1 2
6
4 1 2 3 5 4
10
1 5 6 6 6 4 2 3 2 5
4
4
5
15
9
8
19
Với dãy (2,2,2,3): bốn cấu hình đạt được là (2,2,2,3), (2,2,3,2), (2,3,2,2), (3,2,2,2).
10
10
447773962 773442532 122816 137572579 324627123 157577940 253498609 99147813 425825313 199995380
10
416515986 416515986 416515987 416515987 416515988 416515988 416515989 416515989 416515988 416515989
10
563229302 563229301 563229301 563229302 563229301 563229300 563229300 563229301 563229302 563229302
10
490919926 490919926 490919926 490919925 490919926 490919925 490919926 490919927 490919928 490919929
10
861954306 861954305 861954304 861954305 861954305 861954306 861954307 861954308 861954309 861954308
10
890779831 890779830 890779829 890779828 890779827 890779828 890779829 890779828 890779828 890779828
10
721183090 721183091 721183091 721183091 721183090 721183091 721183090 721183089 721183088 721183089
10
841077511 841077512 841077512 841077511 841077510 841077511 841077511 841077512 841077512 841077513
10
320506887 320506886 320506886 320506887 320506886 320506885 320506884 320506884 320506884 320506885
10
103264177 103264176 103264177 103264176 103264175 103264174 103264174 103264173 103264172 103264173
1
186
210
133
150
133
175
231
155
154
Với dãy gồm 10 phần tử chỉ gồm các giá trị liên tiếp nhau (chênh nhau 1), số hoán vị hợp lệ được tính qua bài toán đếm thứ tự topo.

Ghi chú

Thao tác cho phép tương đương với hoán đổi hai phần tử liền kề có giá trị chênh nhau đúng 1. Từ đó, bài toán quy về đếm số thứ tự topo của một đồ thị có hướng: tồn tại cạnh ij (với i<j) khi |hihj|1 (tức là không thể hoán đổi).

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