Polygon
Đề bài
Mô tả
Cho một ma trận vuông cạnh ban đầu toàn ký tự . Phía trên mỗi cột (cột ) đặt một khẩu súng bắn xuống dưới, và bên trái mỗi hàng (hàng ) đặt một khẩu súng bắn sang phải — tổng cộng khẩu.
Mỗi lần bắn, viên đạn là ký tự . Tại một thời điểm chỉ có một khẩu bắn. Viên đạn bay theo hướng của khẩu súng (từ trên xuống nếu là súng cột, từ trái sang phải nếu là súng hàng) cho đến khi:
- chạm vào biên đối diện của ma trận, hoặc
- chạm vào một ô đã chứa ký tự .
Khi đó nó dừng lại và chiếm ô liền trước vị trí va chạm. Mỗi khẩu súng có thể bắn tùy ý số lần.
Cho ma trận kết quả gồm ký tự và . Hãy xác định xem có tồn tại một chuỗi phát bắn nào đó dẫn đến ma trận này hay không.
Dữ liệu vào
- Dòng đầu chứa số nguyên — số test ().
- Mỗi test bắt đầu bằng dòng chứa số nguyên () — kích thước ma trận. Tiếp theo là dòng, mỗi dòng gồm ký tự hoặc , mô tả ma trận sau quá trình bắn.
- Tổng diện tích của các ma trận trong một test không vượt quá .
Dữ liệu ra
Với mỗi test, in ra YES nếu tồn tại chuỗi phát bắn dẫn tới ma trận đã cho, ngược lại in NO. Các chữ cái có thể viết hoa hoặc thường tuỳ ý.
Ràng buộc
- Tổng qua tất cả các test không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 4 0010 0011 0000 0000 2 10 01 2 00 00 4 0101 1111 0101 0111 4 0100 1110 0101 0111 |
YES NO YES YES NO |
Test 2: ô chứa nhưng nếu bắn từ bất kỳ khẩu súng nào, viên đạn sẽ tiếp tục bay qua ô này — không có gì chặn lại. Test 5: ô không có ngay bên dưới hay bên phải nó (mà cũng không nằm ở hàng/cột cuối), nên không thể đạt được. |
| 1 3 100 000 000 |
NO | Viên đạn ở ô sẽ tiếp tục bay vì không có vật cản ở hay , cũng không phải hàng/cột cuối. |
Bình luận