Cổng

Đề bài

Mô tả

Cho một lưới hình chữ nhật A kích thước n×m gồm n hàng và m cột. Mỗi ô của lưới hoặc là ô đá (ký hiệu 1) hoặc là ô trống (ký hiệu 0). Trong một thao tác, bạn có thể đổi một ô đá thành ô trống hoặc một ô trống thành ô đá.

Một hình chữ nhật con M kích thước a×b (gồm a hàng và b cột) được gọi là một cổng nếu thoả mãn đồng thời các điều kiện sau:

  • a5b4.
  • Với mọi 1<x<a: ô Mx,1 và ô Mx,b là ô đá (hai cột biên trái/phải, trừ hai đầu).
  • Với mọi 1<x<b: ô M1,x và ô Ma,x là ô đá (hai hàng biên trên/dưới, trừ hai đầu).
  • Với mọi 1<x<a1<y<b: ô Mx,y là ô trống (toàn bộ phần bên trong).
  • Bốn ô góc M1,1, M1,b, Ma,1, Ma,b có thể là loại bất kỳ.

Nói cách khác: viền của cổng (trừ bốn góc) phải toàn là đá, phần lõi bên trong phải toàn là trống, còn bốn góc thì tuỳ ý. Lưu ý thứ tự kích thước: phải có đúng a hàng và b cột, không phải b hàng và a cột.

Hãy tìm số thao tác ít nhất cần thực hiện trên lưới A để tồn tại ít nhất một hình chữ nhật con là một cổng.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t là số bộ dữ liệu.
  • Với mỗi bộ dữ liệu:
    • Dòng đầu chứa hai số nguyên nm.
    • n dòng tiếp theo, mỗi dòng gồm m ký tự 0 hoặc 1 mô tả lưới: ký tự thứ j của dòng thứ i0 nếu ô Ai,j trống, là 1 nếu ô Ai,j là đá.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra trên một dòng số thao tác ít nhất để lưới có ít nhất một hình chữ nhật con là cổng.

Ràng buộc

  • t1.
  • 5n400, 4m400.
  • Tổng của n trên tất cả các bộ dữ liệu không vượt quá 400.
  • Tổng của m trên tất cả các bộ dữ liệu không vượt quá 400.

Ví dụ

Input Output Giải thích
1
5 4
1000
0000
0110
0000
0001
12 Lưới nhỏ nhất có thể (5×4) nên cổng chính là toàn bộ lưới. Cần biến viền (trừ góc) thành đá và lõi thành trống, tổng cộng 12 thao tác.
1
9 9
001010001
101110100
000010011
100000001
101010101
110001111
000001111
111100000
000110000
5 Tồn tại một hình chữ nhật con chỉ cần 5 thao tác để trở thành cổng, ít hơn mọi lựa chọn khác.

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