Ma trận tốt

Đề bài

Mô tả

Một ma trận nhị phân (mỗi ô là 0 hoặc 1) được gọi là tốt nếu mọi ma trận con vuông có cạnh chẵn đều chứa một số lẻ các số 1.

Ở đây, một ma trận con vuông cạnh chẵn là một ma trận con vuông kích thước k×k với k chẵn (tức k{2,4,6,}).

Cho một ma trận nhị phân a gồm n dòng và m cột. Hãy xác định số ô ít nhất cần thay đổi (đổi 0 thành 1 hoặc ngược lại) để ma trận trở thành tốt, hoặc cho biết không thể làm được.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm: số dòng và số cột của ma trận.
  • n dòng tiếp theo, mỗi dòng gồm m ký tự 0 hoặc 1 mô tả ma trận a.

Dữ liệu ra

  • In ra số ô ít nhất cần thay đổi để ma trận trở thành tốt, hoặc 1 nếu không thể.

Ràng buộc

  • 1nm106n·m106.

Ví dụ

Input Output Giải thích
3 3
101
001
110
2 Đổi a1,1 thành 0a2,2 thành 1 là đủ để mọi ma trận con 2×2 có số lượng số 1 lẻ.
4 4
1100
0011
1100
0011
-1 Vì cạnh nhỏ nhất bằng 4, tồn tại ma trận con vuông cạnh 4 và không cách nào làm ma trận trở thành tốt.
2 58
1100001110010010100001000000000110110001101001100010101110
1110110010101111001110010001100010001010100011111110110100
27 Cần thay đổi ít nhất 27 ô để mọi ma trận con 2×2 có số 1 lẻ.

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