CF2246C 0mar and Alternating Sums

题目描述

定义长度为 $k$ 的数组 $b$ 的交替和为:$\sum_{i = 1}^{k}(-1)^{i+1}b_i$。 给定一个长度为 $n$ 的非递减数组 $a$,数组中每个元素满足:要么 $a_i=-1$,要么 $a_i$ 为正整数。 求严格递增下标序列 $1 \le i_1 \lt i_2 \lt \ldots \lt i_k \le n$ 的数量,使得子序列 $a_{i_1},a_{i_2},\dots,a_{i_k}$ 的交替和为 $0$。 答案可能较大,对 $10^9+7$ 取模输出。 两个下标序列不同的判定条件:序列长度不同,或存在某一位置的下标不同。 **非递减序列定义**:满足 $a_1 \le a_2 \le \ldots \le a_n$ 的序列。

输入格式

多组测试数据。 第一行输入测试数据组数 $t\ (1 \le t \le 10^4)$。 每组数据: 第一行输入整数 $n\ (1 \le n \le 2\cdot 10^5)$,表示数组长度。 第二行输入 $n$ 个整数 $a_1,a_2,\dots,a_n$,保证 $a_i=-1$ 或 $1\le a_i\le 10^9$,且数组非递减。 所有测试数据的 $n$ 总和不超过 $2\cdot 10^5$。

输出格式

对每组测试数据,输出合法子序列的数量对 $10^9+7$ 取模的结果。 规定:长度为 $0$ 的空子序列的交替和为 $0$。

说明/提示

第一个样例中,合法子序列为: * $[]$ * $[a_2,a_3]=[1,1]$ * $[a_1,a_2,a_4]=[-1,1,2]$ * $[a_1,a_3,a_4]=[-1,1,2]$ * $[a_1,a_4,a_5]=[-1,2,3]$ * $[a_1,a_2,a_3,a_4,a_5]=[-1,1,1,2,3]$。 第二个样例中,仅有空序列 $[]$ 满足交替和为 $0$。