C. 巡检路线 (patrolroutes)

    Type: Default 1000ms 256MiB

巡检路线 (patrolroutes)

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

一座机房被划分成 NNMM 列的网格,每个格子里都有一个需要巡检的模块。维护机器人要连续巡检 tt 个模块,但它的起点没有被记录下来。

系统只保留了相邻两次巡检之间的移动约束:第 ii 次巡检后到第 i+1i+1 次巡检前,机器人移动的曼哈顿距离不能超过 aia_i

两个格子 (x1,y1)(x_1,y_1)(x2,y2)(x_2,y_2) 的曼哈顿距离为:

x1x2+y1y2|x_1-x_2|+|y_1-y_2|

机器人可以原地不动。若 aia_i 大于网格中最远两格的距离,则这一轮约束不会额外限制移动。

请计算一共有多少条可能的巡检路线。答案可能很大,请对 109+710^9+7 取模。

输入格式

在文件 patrolroutes.in 中读入。

第一行输入三个整数 N,M,tN,M,t,表示网格行数、列数和路线长度。

第二行输入 t1t-1 个整数 a1,a2,,at1a_1,a_2,\ldots,a_{t-1},其中 aia_i 表示第 ii 个格子到第 i+1i+1 个格子的最大允许曼哈顿距离。

输出格式

在文件 patrolroutes.out 中输出。

输出一行一个整数,表示可能路线数量对 109+710^9+7 取模后的结果。

样例

样例输入 #1

1 3 2
1

样例输出 #1

7

样例输入 #2

4 4 10
2 0 0 0 1 0 3 1 3

样例输出 #2

363792

数据范围

  • 对于 20%20\% 的数据,满足 N=1N=1M=1M=1
  • 对于另外 20%20\% 的数据,满足 1N,M31 \le N,M \le 3
  • 对于另外 60%60\% 的数据,满足 1N,M101 \le N,M \le 10
  • 对于 100%100\% 的数据,满足 1N,M251 \le N,M \le 252t10002 \le t \le 10000ai1090 \le a_i \le 10^9

J组模拟赛3

Not Attended
Status
Done
Rule
OI
Problem
4
Start at
2026-7-22 8:15
End at
2026-7-22 11:45
Duration
3.5 hour(s)
Host
Partic.
15