trang chủ / đề bài / invrowcol

Đảo hàng và đảo cột

Đề bài

Mô tả

Cho ma trận nhị phân a kích thước n×m, tức là mỗi phần tử ai,j bằng 0 hoặc 1.

Bạn được thực hiện một số thao tác (có thể là không thao tác nào). Mỗi thao tác thuộc một trong hai loại:

  • Chọn một hàng và đảo toàn bộ giá trị trên hàng đó (0 thành 1, 1 thành 0);
  • Chọn một cột và đảo toàn bộ giá trị trên cột đó.

Ma trận được gọi là đã sắp xếp nếu dãy thu được khi đọc các phần tử theo thứ tự từ trái sang phải, từ trên xuống dưới

[a1,1,a1,2,…,a1,m,a2,1,a2,2,…,a2,m,…,an,1,…,an,m]

là một dãy không giảm.

Hãy xác định xem có thể đưa ma trận về trạng thái đã sắp xếp hay không, và nếu có thì chỉ ra một cách thực hiện.

Đảo cùng một hàng (hoặc cùng một cột) hai lần sẽ đưa nó về như cũ, và thứ tự thực hiện các thao tác không ảnh hưởng đến kết quả cuối cùng. Vì vậy một lời giải chỉ cần cho biết mỗi hàng và mỗi cột có bị đảo hay không.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên n và m: số hàng và số cột của ma trận.
  • 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.

Dữ liệu ra

Nếu không thể đưa ma trận về trạng thái đã sắp xếp, in ra NO.

Ngược lại, in ra YES ở dòng đầu tiên. Dòng thứ hai in xâu r độ dài n, trong đó ri bằng 1 nếu hàng thứ i bị đảo và bằng 0 nếu ngược lại. Dòng thứ ba in xâu c độ dài m, trong đó cj bằng 1 nếu cột thứ j bị đảo và bằng 0 nếu ngược lại.

Nếu có nhiều đáp án, in ra đáp án nào cũng được.

Ràng buộc

  • 1≤n,m≤200
  • ai,j∈{0,1}

Ví dụ

Input Output Giải thích
2 2
1 1
0 1
YES
01
11
Đảo cả hai cột rồi đảo hàng 2, ma trận trở thành 0 0 / 0 1 và dãy đọc được là 0 0 0 1. Đáp án 00 / 10 cũng hợp lệ và được chấp nhận.
3 4
0 0 0 1
0 0 0 0
1 1 1 1
YES
010
0000
Chỉ cần đảo hàng 2, không đảo cột nào. Dãy đọc được là 0 0 0 1 1 1 1 1 1 1 1 1.
3 3
0 0 0
1 0 1
1 1 0
NO Với mọi cách chọn tập hàng và tập cột để đảo, luôn còn ít nhất hai hàng không đồng nhất, nên ma trận không bao giờ được sắp xếp.

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