trang chủ / đề bài / thhv19_jump

Nhảy về đích

Đề bài

Mô tả

Xét bảng hình chữ nhật kích thước m×n ô. Các hàng được đánh số từ 1 đến m từ trên xuống dưới, các cột được đánh số từ 1 đến n từ trái qua phải. Ô nằm trên hàng i và cột j được ghi một số nguyên không âm ký hiệu Ci,j. Ở góc trên trái bảng có một quân cờ. Ta phải chuyển quân cờ về ô dưới phải của bảng theo quy tắc sau:

  • Tại mỗi bước nhảy, chỉ được di chuyển sang phải trên cùng một hàng hoặc di chuyển xuống dưới theo cùng một cột.
  • Kích thước bước nhảy không được vượt quá số ghi trên ô có quân cờ hiện tại.
  • Chỉ được di chuyển trong phạm vi bảng đang xét.

Kích thước của bước nhảy từ ô (i,j) tới ô (u,v) được tính bằng giá trị u+v−i−j. Mỗi bước nhảy phải đưa quân cờ sang một ô khác, tức là có kích thước ít nhất 1. Hai cách di chuyển được coi là khác nhau nếu dãy các ô mà quân cờ lần lượt đứng trong hai cách đó khác nhau.

Yêu cầu: Cho dãy a1,a2,…,am,b1,b2,…,bn và số nguyên dương k. Bảng C kích thước m×n được xác định với Ci,j=1+[(ai+bj)modk] với mọi i=1÷m; j=1÷n. Hãy tính số lượng cách di chuyển quân cờ từ ô trên trái (1,1) xuống ô dưới phải (m,n).

Dữ liệu vào

  • Dòng đầu chứa 3 số nguyên dương m,n,k (m,n,k≤4·103).
  • Dòng thứ hai chứa m số nguyên a1,a2,…,am (0≤ai≤109).
  • Dòng thứ ba chứa n số nguyên b1,b2,…,bn (0≤bj≤109).

Dữ liệu ra

In ra một số nguyên duy nhất là số cách di chuyển tìm được lấy theo modulo 109+7.

Ràng buộc

  • 1≤m,n,k≤4·103.
  • 0≤ai,bj≤109.

Subtasks

  • Có 15% số test tương ứng 15% số điểm có m,n≤10, k=1.
  • Có 15% số test khác tương ứng 15% số điểm có m,n≤103, k=1.
  • Có 20% số test khác tương ứng 20% số điểm có m,n≤103, k≤10.
  • Có 20% số test khác tương ứng 20% số điểm có m,n≤103.
  • 30% số test còn lại tương ứng 30% số điểm không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
3 2 1
3 4 11
2 5
3 Mọi ô có Ci,j=1, mỗi bước chỉ nhảy sang ô kề bên phải hoặc bên dưới. Có 3 cách: (1,1)→(1,2)→(2,2)→(3,2); (1,1)→(2,1)→(2,2)→(3,2); (1,1)→(2,1)→(3,1)→(3,2).
3 2 2
3 4 11
2 5
4 Bảng C theo hàng: (2,1), (1,2), (2,1). Từ ô (1,1) có C1,1=2 nên có thể nhảy thẳng xuống ô (3,1). Có 4 cách: 3 cách như ví dụ 1 và thêm (1,1)→(3,1)→(3,2).
1 1 1
0
1000000000
1 Ví dụ bổ sung (không có trong đề gốc). Quân cờ đã đứng ở ô đích; cách duy nhất là không nhảy bước nào.

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