Hang động

Đề bài

Mô tả

Cho lưới n×m gồm các ô đen hoặc trắng (các hàng đánh số 1..n từ trên xuống, các cột đánh số 1..m từ trái sang phải). Lưới được gọi là một "hang động" nếu thỏa mãn đồng thời hai điều kiện sau:

  1. Tồn tại một đoạn hàng [l,r] (1lrn) sao cho mỗi hàng trong l,l+1,,rđúng hai ô đen, còn tất cả các hàng khác toàn ô trắng.
  2. Tồn tại một hàng t (ltr) sao cho:
    • Với mọi lijt: khoảng cột nằm giữa hai ô đen của hàng i (bao gồm cả hai ô đen) là tập con của khoảng cột tương ứng của hàng j.
    • Với mọi tijr: khoảng cột giữa hai ô đen của hàng j (bao gồm cả hai ô đen) là tập con của khoảng cột tương ứng của hàng i.

Nói cách khác, các khoảng cột giữa hai ô đen phình to dần từ hàng l xuống hàng t, rồi thu nhỏ dần từ hàng t xuống hàng r.

Đếm số cách tô hang động trên lưới n×m. Hai cách tô được coi là khác nhau nếu có ít nhất một ô có màu khác nhau giữa chúng. In ra kết quả lấy theo modulo 109+7.

Dữ liệu vào

Một dòng chứa hai số nguyên nm.

Dữ liệu ra

Một dòng duy nhất: số cách tô hang động lấy theo modulo 109+7.

Ràng buộc

  • 1n,m2000.

Ví dụ

Input Output Giải thích
3 5 451 Lưới 3×5 có 451 cách tô hang động hợp lệ.
1 1 0 Mỗi hàng của hang động cần đúng 2 ô đen nhưng lưới chỉ có 1 cột.
4 4 485 Lưới 4×4 có 485 cách.

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