#P13566. 「CZOI-R5」青蛙的旅行

    ID: 14394 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 4 上传者: 标签>动态规划 DP洛谷原创O2优化前缀和洛谷比赛

「CZOI-R5」青蛙的旅行

题目背景

小 L 是一只青蛙,他现在准备在 A 城旅行。

题目描述

A 城是一个 n×mn\times m 的矩阵。有一个给定的数 kk。还有一个变量 ww,初始为 00。记 (r,c)(r,c) 表示第 rr 行第 cc 列。

这个矩阵中有 tt 个特殊点,第 ii 个在 (xi,yi)(x_i,y_i),类型为 pip_ipi{1,2}p_i\in\{1,2\}),若 pi=2p_i=2,则有一个额外属性 sis_i保证不存在 i,ji,j 满足 iji\neq jxi=xj,yi=yjx_i=x_j,y_i=y_j

小 L 初始在 (1,1)(1,1),它可以做任意次以下跳跃方法之一直到它到达 (n,m)(n,m)。假设它现在在 (a,b)(a,b)

  • 选择一个 hh,满足 0hk0\le h\le k,且不存在 1ih1\le i\le h 使得 (a+i,b)(a+i,b) 为类型为 22 的特殊点。接着跳到 (a+h+1,b)(a+h+1,b)
  • 选择一个 hh,满足 0hk0\le h\le k,且不存在 1ih1\le i\le h 使得 (a,b+i)(a,b+i) 为类型为 22 的特殊点。接着跳到 (a,b+h+1)(a,b+h+1)
  • 选择一个 hh,满足 0hk0\le h\le k,且不存在 1ih1\le i\le h 使得 (a+i,b+i)(a+i,b+i) 为类型为 22 的特殊点。接着跳到 (a+h+1,b+h+1)(a+h+1,b+h+1)

在每次跳跃后,假设跳到了 (X,Y)(X,Y),若 (X,Y)(X,Y) 是第 ZZ 个特殊点,那么:

  • pZ=1p_Z=1,则 ww+1w\leftarrow w+1
  • pZ=2p_Z=2,令 wwsZw\leftarrow w-s_Z

若某个方案中间某个时刻 w<0w<0,或某个方案中间某个时刻 (X,Y)(X,Y) 不在矩阵内,则该方案不合法。

问到 (n,m)(n,m) 的合法方案数,答案对 109+710^9+7 取模。当且仅当每次的 (X,Y)(X,Y) 组成的序列不同时,两种方案才不同。

输入格式

第一行输入 44 个整数 n,m,k,tn,m,k,t

接下来 tt 行,每行先输入 11 个整数 pip_i,然后:

  • pi=1p_i=1,则输入 22 个整数 xi,yix_i,y_i,表示一个类型为 11 的特殊点。
  • pi=2p_i=2,则输入 33 个整数 xi,yi,six_i,y_i,s_i,表示一个类型为 22 的特殊点。

输出格式

第一行输出 11 个整数,表示答案。

3 3 1 2
1 1 3
2 2 3 1
15
3 3 1 0
22

提示

【样例解释 #1】

注:下列每个点代表一个格子;红色箭头为一次跳跃,箭头尾端为 (X,Y)(X,Y);黄色点为 pi=1p_i=1 的特殊点;绿色点为 pi=2p_i=2 的特殊点。

以下 1515 种方案是合法的:

以下 55 种方案不合法,因为在这些方案中,小 L 到 (2,3)(2,3)w=1<0w=-1<0

以下 22 种方案不合法,因为在这些方案中,小 L 越过了 pi=2p_i=2 的特殊点:

【样例解释 #2】

由于没有特殊点,在样例解释 #1 中展示的合法的 1515 种方案,以及不合法的 77 种方案在样例 #2 中均合法,所以答案为 2222

【数据范围】

本题采用捆绑测试。

  • Subtask #1(15 pts15\text{ pts}):n,m8n,m\le8
  • Subtask #2(25 pts25\text{ pts}):k=0k=0
  • Subtask #3(25 pts25\text{ pts}):t=0t=0
  • Subtask #4(35 pts35\text{ pts}):无特殊限制。

对于 100%100\% 的数据,1xin1801\le x_i\le n\le1801yim1801\le y_i\le m\le1800kmax{n,m}+10\le k\le \max\{n,m\}+10tn×m20\le t\le n\times m-2pi{1,2}p_i\in\{1,2\}1si3561\le s_i\le356

保证没有任何两对 (xi,yi)(x_i,y_i) 相同,保证不存在 (xi,yi)=(1,1)(x_i,y_i)=(1,1)(xi,yi)=(n,m)(x_i,y_i)=(n,m)