Trò chơi xếp quân (Chips Puzzle)
Đề bài
Mô tả
Cho một bảng gồm hàng và cột. Mỗi ô của bảng chứa một xâu (có thể rỗng) gồm các ký tự '0' (quân trắng) và '1' (quân đen) xếp thành một hàng. Như vậy mỗi trạng thái của bảng được mô tả bằng một bảng các xâu nhị phân.
Bạn được phép thực hiện thao tác sau:
- Chọn hai ô khác nhau và nằm cùng một hàng hoặc cùng một cột, với điều kiện xâu tại ô không rỗng;
- Lấy ký tự cuối cùng của xâu tại ô và chuyển nó lên đầu xâu tại ô .
Cho trạng thái đầu và trạng thái cuối của bảng. Đảm bảo rằng tổng số ký tự '0' và tổng số ký tự '1' ở hai trạng thái là như nhau. Gọi là tổng độ dài tất cả các xâu (giống nhau ở cả hai trạng thái). Hãy đưa ra một dãy thao tác biến trạng thái đầu thành trạng thái cuối, sao cho số thao tác không vượt quá .
Có thể chứng minh rằng luôn tồn tại lời giải. Nếu có nhiều đáp án, in ra một đáp án bất kỳ thoả mãn.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và — số hàng và số cột của bảng.
- dòng tiếp theo mô tả trạng thái đầu: dòng thứ chứa xâu nhị phân không rỗng, xâu thứ là xâu ở ô .
- dòng tiếp theo mô tả trạng thái cuối theo cùng định dạng.
Các hàng được đánh số từ đến , các cột từ đến .
Dữ liệu ra
- Dòng đầu in số nguyên — số thao tác sử dụng, với .
- dòng tiếp theo, mỗi dòng in bốn số nguyên mô tả một thao tác. Phải thoả mãn , , , hoặc , và tại thời điểm thực hiện, xâu ở ô phải khác rỗng.
Dãy thao tác này phải biến trạng thái đầu thành trạng thái cuối.
Ràng buộc
- (tổng độ dài các xâu)
- Số lượng ký tự '0' và số lượng ký tự '1' trùng nhau ở hai trạng thái.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 2 2 1 0 0 1 1 0 0 1 |
8 1 1 2 1 1 2 1 1 2 1 1 1 2 2 2 1 2 1 2 2 1 1 2 1 1 1 1 2 2 1 1 1 |
Trạng thái đầu đã trùng trạng thái cuối nên in ra một dãy thao tác trả bảng về đúng trạng thái đó (in ra 0 cũng được coi là hợp lệ). Đây chỉ là một trong nhiều đáp án đúng. |
| 2 2 0 0 0 1 1 0 0 0 |
10 1 1 1 2 1 2 1 1 2 1 1 1 2 2 2 1 1 2 1 1 1 1 1 2 1 2 2 2 1 1 2 1 1 1 1 2 2 1 1 1 |
Cần chuyển quân '1' duy nhất từ ô về ô . Dãy thao tác đưa toàn bộ quân về dạng chuẩn rồi rải lại đúng vị trí ở trạng thái cuối. |
Bình luận