Bảng nhị phân về 0

Đề bài

Mô tả

Cho bảng nhị phân kích thước n×m gồm các kí tự 01.

Trong một thao tác, bạn chọn ba ô khác nhau cùng nằm trong một hình vuông 2×2 nào đó của bảng, rồi đảo giá trị (0 thành 1, 1 thành 0) trên cả ba ô đó.

Hãy đưa toàn bộ bảng về 0. Bạn được phép thực hiện không quá 3nm thao táckhông cần tối thiểu hoá số thao tác. Có thể chứng minh rằng luôn tồn tại đáp án.

Dữ liệu vào

Dòng đầu chứa số nguyên t — số bộ test.

Với mỗi bộ test:

  • Dòng đầu chứa hai số nguyên n,m.
  • n dòng tiếp theo, mỗi dòng là một xâu nhị phân độ dài m mô tả các hàng của bảng.

Dữ liệu ra

Với mỗi bộ test:

  • Dòng đầu in số nguyên k (0k3nm) — số thao tác.
  • k dòng tiếp theo, mỗi dòng in 6 số nguyên x1,y1,x2,y2,x3,y3 (1xin, 1yim) mô tả thao tác trên ba ô (x1,y1),(x2,y2),(x3,y3). Ba ô phải khác nhau và cùng thuộc một hình vuông 2×2.

Có nhiều đáp án hợp lệ; bất kỳ đáp án nào thoả mãn ràng buộc và đưa được bảng về toàn 0 đều được chấp nhận.

Ràng buộc

  • 1t5000
  • 2n,m100
  • Tổng nm trên tất cả bộ test không vượt quá 20000.

Ví dụ

Input Output Giải thích
1
2 2
00
00
0 Bảng đã toàn 0, không cần thao tác.
1
2 2
10
00
3
1 1 2 1 2 2
1 1 1 2 2 2
1 1 2 1 1 2
Một dãy 3 thao tác đưa ô (1,1) về 0 trong khi các ô khác giữ nguyên. Đáp án không duy nhất.

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