Đường Đi Đối Xứng
Đề bài
Mô tả
Cho một lưới kích thước với lẻ. Các hàng được đánh số từ đến từ trên xuống dưới, các cột được đánh số từ đến từ trái sang phải. Ô nằm ở giao của hàng và cột được ký hiệu là .
Mỗi ô chứa số hoặc số . Bạn chỉ biết trước rằng ô góc trên bên trái chứa và ô góc dưới bên phải chứa , tức là và .
Nhiệm vụ của bạn là xác định toàn bộ nội dung của lưới bằng cách đặt câu hỏi cho hệ thống.
Một đường đi đơn điệu từ ô đến ô là dãy ô bắt đầu ở , kết thúc ở , mỗi bước chỉ đi sang phải hoặc đi xuống. Đường đi đó được gọi là đối xứng nếu dãy các chữ số ghi trên các ô của nó đọc xuôi và đọc ngược giống hệt nhau.
Mỗi câu hỏi cho biết giữa hai ô đã chọn có tồn tại ít nhất một đường đi đơn điệu đối xứng hay không. Lưu ý rằng giữa hai ô thường có nhiều đường đi đơn điệu, và hệ thống chỉ trả lời "có" hoặc "không", chứ không cho biết đường đi nào.
Giao thức tương tác
Đây là bài toán tương tác. Chương trình của bạn giao tiếp với hệ thống đánh giá qua đầu vào/ra chuẩn.
Đầu tiên, chương trình đọc số nguyên lẻ .
Sau đó bạn có thể thực hiện hai loại thao tác:
? x1 y1 x2 y2: hỏi về cặp ô và . Bộ bốn số phải thỏa mãn , và (hai ô phải đi được từ ô thứ nhất tới ô thứ hai bằng các bước sang phải và xuống dưới, đồng thời không kề nhau). Hệ thống trả lời nếu tồn tại đường đi đơn điệu đối xứng từ đến , và trả lời nếu không tồn tại.!: khai báo kết quả. Sau dòng chứa dấu!, in ra dòng, dòng thứ là xâu độ dài mô tả hàng thứ của lưới, rồi kết thúc chương trình.
Bạn được phép dùng tối đa câu hỏi dạng ?.
Nếu một câu hỏi không hợp lệ hoặc bạn vượt quá số câu hỏi cho phép, hệ thống sẽ in ra và dừng tương tác; khi đó chương trình của bạn phải thoát ngay lập tức.
Quan trọng: sau mỗi lần in ra, bạn phải flush output:
- C++:
cout << endl;hoặccout.flush(); - Python:
print(..., flush=True)
Ràng buộc
- , lẻ
- ,
- Số câu hỏi tối đa:
Ví dụ
| Chương trình | Hệ thống | Giải thích |
|---|---|---|
| 3 | Lưới có kích thước . Lưới ẩn là 111 / 110 / 100 | |
| ? 1 1 1 3 | 1 | Đường duy nhất là , đối xứng |
| ? 2 1 2 3 | 0 | Đường duy nhất là , không đối xứng |
| ? 3 1 3 3 | 0 | Đường duy nhất là , không đối xứng |
| ? 1 1 2 2 | 1 | Có hai đường: và , đối xứng |
| ? 1 2 2 3 | 0 | Hai đường và đều không đối xứng |
| ? 2 1 3 2 | 0 | Hai đường và đều không đối xứng |
| ? 2 2 3 3 | 0 | Hai đường và đều không đối xứng |
| ? 1 2 3 3 | 0 | Không đường đi nào từ tới đối xứng |
| ! 111 110 100 |
Khai báo lưới, dùng câu hỏi |
| Chương trình | Hệ thống | Giải thích |
|---|---|---|
| 3 | Lưới ẩn là 100 / 001 / 000 | |
| ? 1 1 1 3 | 0 | Đường duy nhất là |
| ? 2 1 2 3 | 0 | Đường duy nhất là |
| ? 3 1 3 3 | 1 | Đường duy nhất là , đối xứng |
| ? 1 1 2 2 | 0 | Hai đường đều là với hai đầu khác nhau |
| ? 1 2 2 3 | 0 | Hai đường và |
| ? 2 1 3 2 | 1 | Đường đối xứng |
| ? 2 2 3 3 | 1 | Đường đối xứng |
| ? 1 1 2 3 | 1 | Đường đối xứng |
| ! 100 001 000 |
Khai báo lưới, dùng câu hỏi |
Bình luận