Mê cung ngoặc

Đề bài

Mô tả

Một mê cung được mô tả bằng bảng chữ hình chữ nhật kích thước m×n. Các hàng của bảng được đánh số từ 1 đến m, từ trên xuống dưới, các cột của bảng được đánh số từ 1 đến n, từ trái qua phải. Ô nằm trên giao của hàng i và cột j được gọi là ô (i,j). Mỗi ô của lưới chứa một kí tự ngoặc mở ( hoặc ngoặc đóng ).

8ee7489d-d486-405a-b95d-9c0351c66fe2.png

Người chơi sẽ xuất phát từ ô (1,1), quay hướng tới phía ô (1,n) và di chuyển trên bảng. Việc di chuyển phải tuân thủ các quy tắc được mô tả trong hình trên, cụ thể: từ ô đang đứng, căn cứ vào hướng đang hướng tới được chỉ ra bởi mũi tên , thực hiện bước di chuyển sang ô kề cạnh đang hướng tới, hoặc sang ô kề cạnh nằm bên phải (các hướng có thể di chuyển được chỉ ra bởi các mũi tên ). Mỗi ô chỉ được đi qua nhiều nhất một lần. Người chơi có thể dừng di chuyển tại một ô nào đó để kết thúc trò chơi.

Khi kết thúc trò chơi, người chơi nhận được một xâu kí tự T gồm các kí tự trong các ô trên đường đi được xếp liên tiếp nhau. Người chơi giành chiến thắng nếu xâu T là một biểu thức ngoặc đúng bậc k.

Nhắc lại, định nghĩa biểu thức ngoặc đúng và bậc của biểu thức ngoặc:

  • Biểu thức rỗng là biểu thức ngoặc đúng và có bậc bằng 0,
  • Nếu A là biểu thức ngoặc đúng có bậc bằng k thì (A) cũng là một biểu thức ngoặc đúng có bậc bằng k+1,
  • Nếu AB là hai biểu thức ngoặc đúng và có bậc tương ứng là k1k2 thì AB cũng là một biểu thức ngoặc đúng có bậc bằng max(k1,k2).

Ví dụ, ()() là một biểu thức ngoặc đúng có bậc bằng 2 còn (()()) là một biểu thức ngoặc đúng và có bậc bằng 3.

Cho bảng chữ và số nguyên dương k, đếm số lượng đường đi khác nhau giúp người chơi giành chiến thắng. Hai đường đi được gọi là khác nhau nếu tồn tại một ô thuộc đường đi này nhưng không thuộc đường đi kia.

Dữ liệu vào

  • Dòng đầu tiên ghi ba số nguyên dương m,n,k (m,n30; k10);
  • Tiếp theo là m dòng mô tả bảng chữ, mỗi dòng chứa một xâu gồm n kí tự, mỗi kí tự ngoặc mở ( hoặc ngoặc đóng ).

Dữ liệu ra

Một dòng là số lượng đường đi đếm được chia dư cho (109+7).

Ràng buộc

  • m,n30; k10
  • Subtask 1 (50 điểm): m,n5
  • Subtask 2 (25 điểm): k=1
  • Subtask 3 (25 điểm): Không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
3 3 1
())
)()
)))
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.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