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 n và m: 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

  • 1≤n≤m≤106 và n·m≤106.

Ví dụ

Input Output Giải thích
3 3
101
001
110
2 Đổi a1,1 thành 0 và a2,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.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