某实验室记录了一个长度为 n 的非递减整数序列 (a1,a2,…,an),即对于任意 1≤i<n 满足 ai≤ai+1。由于仪器故障,序列中部分记录丢失,丢失的位置用 0 表示。已知首项 a1 与末项 an 均未丢失。
请你计算在所有可能恢复丢失值的情况下,能够满足原始非递减规律的序列共有多少种。答案可能很大,请输出对 109+7 取模后的结果。
约束条件
第一行输入一个整数 n,表示序列的长度。 第二行输入 n 个整数 a1,a2,…,an,用空格分隔,其中 0 表示该位置数据丢失。
输出一个整数,表示所有可能的原始序列数目对 109+7 取模的结果。
输入
4
2 0 0 6
输出
15
说明
已知 a1=2,a4=6,中间有 2 个缺失值,值域跨度 d=6−2=4。需要填入 x1,x2 满足 2≤x1≤x2≤6,这是从 d+1=5 个可用值(2,3,4,5,6)中可重复地选取 2 个的组合问题。方案数为 (kd+k)=(24+2)=15。
输入
6
1 0 2 0 3 4
输出
4
说明
序列中的已知值为 1,2,3,4。第一段从 1 到 2:中间有 k=1 个缺失位,跨度 d=1,填法数为 (11+1)=2。第二段从 2 到 3:同样 k=1,d=1,填法数也为 2。第三段 3 与 4 相邻,无缺失位。总方案数为 2×2=4,分别为 1,2,2,3,3,4;1,2,2,3,4,4;1,1,2,3,3,4;1,1,2,3,4,4。
输入
2
10 20
输出
1
说明
当 n=2 且没有任何缺失值时,原始序列完全确定,只有 1 种可能。
输入
5
1 0 0 0 5
输出
35
说明
a1=1,a5=5,中间有 k=3 个缺失值,跨度 d=4。满足非递减的填法数为 (kd+k)=(37)=35。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册