Số Cách Đi Quân Mã (SOCACH) – Olympic 30/4 2023 khối 10

Xem dạng PDF

Gửi bài giải

Điểm: 3,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Độ khó: Khá (3/4 điểm)

📖 Bài giải chi tiết: 👉 Bấm vào đây để xem lời giải cụ thể của bài này trên blog

⚠️ Lưu ý: hãy đảm bảo em đã thật sự cố gắng tự làm bài trước, rồi mới bấm vào xem bài giải nhé!

🎓 Khóa học Lập trình Thuật toán thi đấu của thầy Nguyễn Việt Nam Sơn – 111 buổi video, kèm cặp cá nhân, luyện thi chuyên Tin · HSG Tin học · Tin học trẻ · đội tuyển quốc gia · Olympic/ICPC. 👉 Xem chi tiết khóa học · Thành tích học viên

📞 Đăng ký học: Zalo 0767 666 702 · Facebook Nguyễn Việt Nam Sơn · 🌐 laptrinhthuattoan.blogspot.com


Lưu ý: Trên web đọc dữ liệu từ bàn phím (stdin) và in ra màn hình (stdout).

Nguồn: Olympic truyền thống 30/4 lần XXVII – 2023, Tin học khối 10 – Câu 1 (SOCACH).

Xét một bàn cờ vua có kích thước ~m \times n~ gồm có ~m~ dòng, ~n~ cột. Các dòng được đánh số từ ~1~ đến ~m~, các cột được đánh số từ ~1~ đến ~n~. Một ô nằm trên dòng ~x~, cột ~y~ được kí hiệu là ~(x, y)~.

Một quân mã xuất phát từ một ô trên bàn cờ có thể đi đến một trong bốn ô như hình vẽ.

hình

Hình trong đề: từ ô ~(4, 4)~ quân mã chỉ đi được tới 4 ô ~(3, 6)~, ~(5, 6)~, ~(6, 5)~ và ~(6, 3)~. Tức là từ ô ~(x, y)~ quân mã chỉ đi được tới các ô ~(x-1, y+2)~, ~(x+1, y+2)~, ~(x+2, y+1)~, ~(x+2, y-1)~ (nếu ô đó nằm trong bàn cờ).

Ngoài ra, trên bàn cờ có ~k~ ô mà quân mã không được phép đi vào. Những ô này được gọi là ô bị cấm.

Yêu cầu: Tìm số cách di chuyển của quân mã từ ô ~(x, y)~ cho trước đến ô ~(m, n)~.

Dữ liệu vào
  • Dòng đầu tiên ghi 4 số nguyên ~m, n, k~ và ~Q~ ~(1 < m, n \le 1000;\ 0 \le k \le 10;\ Q \le 10^5)~.
  • Trên ~k~ dòng tiếp theo, mỗi dòng ghi 2 số nguyên ~kx_i, ky_i~ cho biết ô ~(kx_i, ky_i)~ bị cấm ~(1 \le kx_i < m;\ 1 \le ky_i < n)~.
  • Trên ~Q~ dòng tiếp theo, mỗi dòng ghi 2 số nguyên ~x_i, y_i~ ~(1 \le x_i < m;\ 1 \le y_i < n)~.
  • Các số trên một dòng cách nhau bởi ít nhất một khoảng trắng.
Kết quả
  • Gồm ~Q~ số nguyên ~W_i~, mỗi số trên một dòng cho biết số cách di chuyển quân mã từ ô ~(x_i, y_i)~ cho trước đến ô ~(m, n)~. Trong đó ~W_i~ là phần dư của phép chia số cách quân mã di chuyển từ ô ~(x_i, y_i)~ đến ô ~(m, n)~ cho ~10^9~.
Giới hạn
  • 30% test ứng với 30% số điểm của bài có ~1 < m, n \le 100;\ k = 0;\ Q \le 10^2~.
  • 20% test ứng với 20% số điểm của bài có ~1 < m, n \le 100;\ 0 < k \le 10;\ Q \le 10^2~.
  • 50% test ứng với 50% số điểm của bài có ràng buộc như đề bài.
  • Giới hạn thời gian: 1 giây.

Sample Input 1

4 5 1 3
2 4
1 2
3 3
2 4

Sample Output 1

1
1
0

Sample Input 2

4 5 0 2
1 2
3 3

Sample Output 2

2
1
Giải thích
  • Ví dụ 1: bàn cờ 4 dòng, 5 cột, ô ~(2, 4)~ bị cấm, đích là ~(4, 5)~. Từ ~(1, 2)~ chỉ có 1 cách: ~(1,2) \to (3,3) \to (4,5)~. Từ ~(3, 3)~ có đúng 1 cách ~(3,3) \to (4,5)~. Ô ~(2, 4)~ bị cấm, quân mã không được đứng ở đó nên đáp án là 0.
  • Ví dụ 2: không có ô cấm, nên từ ~(1, 2)~ có thêm đường ~(1,2) \to (2,4) \to (4,5)~, tổng cộng 2 cách; từ ~(3, 3)~ vẫn là 1 cách.

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.