#P16355. [2026年山东第二轮集训]最后的登山

[2026年山东第二轮集训]最后的登山

题目描述

你正在爬一座山,山的高度为 n+1n+1 千米。在海拔为

0,1,2,,n,n+10,1,2,\ldots,n,n+1

千米的地方都设有哨站。

哨站分为普通哨站和核心哨站。保证核心哨站的数量最多为 mm,且海拔为 0,n,n+10,n,n+1 千米的哨站均为普通哨站。

每个哨站都有一个指示变量 cic_i,初始时所有 ci=1c_i=1

用变量 ww 表示你的努力值,初始时 w=0w=0

当你位于某个哨站 ii 时,按照如下规则行动:

  • 如果 i=n+1i=n+1,则登顶成功,过程结束,此时的 ww 即为你付出的努力;
  • 否则,如果 i=0i=0,则直接爬到哨站 i+1i+1,并令
w=w+1;w=w+1;
  • 否则,若 1in1\le i\le n,则先令
w=w+1,w=w+1,

然后:

  • 如果 ci=0c_i=0,则从哨站 ii 爬到哨站 i+bii+b_i,并令 ci=1c_i=1。其中,如果 ii 是普通哨站,则 bi=1b_i=1;否则 bi=2b_i=2
  • 如果 ci=1c_i=1,则从哨站 ii 掉到哨站 iaii-a_i,并令 ci=0c_i=0,其中 1aii1\le a_i\le i

请你求出成功登顶所付出的努力值。由于答案可能很大,请输出答案对 109+710^9+7 取模后的结果。

输入格式

第一行包含两个整数 n,mn,m

第二行包含 nn 个整数

a1,a2,,an.a_1,a_2,\ldots,a_n.

第三行包含 nn 个整数

b1,b2,,bn.b_1,b_2,\ldots,b_n.

输出格式

输出一行一个整数,表示成功登顶所付出的努力值对 109+710^9+7 取模后的结果。

样例 1

输入

2 0
1 1
1 1

输出

9

样例 2

输入

3 1
1 2 1
2 1 1

输出

11

数据范围与子任务

对于全部数据:

1n2000,1\le n\le 2000, 0mmin(n1,15),0\le m\le\min(n-1,15), 1aii,1\le a_i\le i, bi{1,2},b_i\in\{1,2\},

且满足 bn=1b_n=1。在 1n11\sim n-1 号哨站中,至多有 mm 个位置满足 bi=2b_i=2

子任务编号 分值 nn\le 特殊性质
1 10 20002000 m=0m=0
2 15 4040 m=1m=1
3 25 6060 m10m\le 10
4 200200
5 20002000