trang chủ / đề bài / squarefill

Lấp đầy ô vuông

Đề bài

Mô tả

Cho hai ma trận A và B, mỗi ma trận có đúng n hàng và m cột. Mỗi phần tử của A là 0 hoặc 1; ban đầu mọi phần tử của B đều bằng 0.

Bạn được phép thực hiện một số thao tác trên ma trận B. Mỗi thao tác, bạn chọn một ma trận con kích thước 2×2 của B và gán tất cả 4 phần tử trong đó bằng 1. Cụ thể, bạn chọn hai số nguyên x và y thỏa 1≤x<n và 1≤y<m, rồi gán Bx,y,Bx,y+1,Bx+1,y,Bx+1,y+1 đều bằng 1.

Mục tiêu là làm cho ma trận B trùng với ma trận A (mọi phần tử tương ứng bằng nhau).

Hãy xác định điều đó có khả thi hay không. Nếu có, hãy đưa ra một dãy thao tác biến B thành A. Không cần tối thiểu hóa số thao tác, nhưng số thao tác k phải thỏa 0≤k≤2500.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và m.
  • n dòng tiếp theo, mỗi dòng chứa m số nguyên; số thứ j trên dòng thứ i là Ai,j (bằng 0 hoặc 1).

Dữ liệu ra

  • Nếu không thể làm cho B trùng A, in ra một số nguyên −1.
  • Ngược lại, dòng đầu in số nguyên k — số thao tác; sau đó k dòng, mỗi dòng chứa hai số nguyên x và y mô tả một thao tác.

Nếu có nhiều đáp án, in ra bất kỳ đáp án hợp lệ nào.

Ràng buộc

  • 2≤n,m≤50
  • Mỗi Ai,j∈{0,1}

Ví dụ

Input Output Giải thích
3 3
1 1 1
1 1 1
0 1 1
3
1 1
1 2
2 2
Ba thao tác tại các góc trên-trái (1,1), (1,2), (2,2) phủ đúng các ô bằng 1 của A. Đây là một trong nhiều đáp án hợp lệ.
3 3
1 0 1
1 0 1
0 0 0
-1 Không có ma trận con 2×2 toàn số 1 nào trong A, nên không thể tạo bất kỳ ô 1 nào — trong khi A có ô bằng 1. Vô nghiệm.
3 2
0 0
0 0
0 0
0 A toàn số 0, không cần thao tác nào.

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