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

Lát gạch của Drazil

Đề bài

Mô tả

Cho một bảng chữ nhật gồm N hàng và M cột. Mỗi ô của bảng hoặc trống (ký hiệu .), hoặc bị chiếm (ký hiệu *).

Bạn cần lát toàn bộ các ô trống bằng những quân domino kích thước 1×2 sao cho mỗi ô trống được phủ đúng một lần, hai quân domino không chồng lên nhau và không quân nào phủ lên ô bị chiếm.

Nhiệm vụ chỉ yêu cầu in ra cách lát khi cách lát đó tồn tại và là duy nhất. Nếu không có cách lát nào, hoặc có từ hai cách lát khác nhau trở lên, hãy in ra Not unique.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên NM.
  • N dòng tiếp theo, mỗi dòng chứa M ký tự mô tả một hàng của bảng, gồm các ký tự .*.

Dữ liệu ra

Nếu cách lát không tồn tại hoặc không duy nhất, in ra một dòng Not unique.

Ngược lại, in ra N dòng mô tả cách lát: ô bị chiếm giữ nguyên ký tự *, một quân domino nằm ngang được biểu diễn bằng cặp ký tự <> (theo thứ tự trái sang phải), một quân domino nằm dọc được biểu diễn bằng cặp ký tự ^v (theo thứ tự trên xuống dưới).

Ràng buộc

  • 1N,M2000

Ví dụ

Input Output Giải thích
3 3
...
.*.
...
Not unique Có đúng hai cách lát khác nhau, nên đáp án là Not unique.
2 4
*..*
....
*<>*
<><>
Bốn ô trống ở hai đầu hàng dưới buộc phải ghép theo chiều ngang, từ đó toàn bộ cách lát được xác định duy nhất.
4 4
..**
*...
*.**
....
<>**
*^<>
*v**
<><>
Ô ở hàng 1 cột 1 chỉ có duy nhất một ô trống kề nó (bên phải), nên quân domino chứa nó bị ép nằm ngang. Cứ tiếp tục ép như vậy, cả bảng chỉ có một cách lát.
1 1
.
Not unique Không tồn tại cách lát: ô trống duy nhất không thể ghép với ai.

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