编程题
### 问题描述 在一个遥远的星球上,小然发现了一种神秘的石板,上面刻有一串神秘的数字。他注意到,每块石板上的数字都满足一定的规则。在一块石板上,数字的序列是 $$A_1, A_2, \ldots, A_N$$。他还发现了一种神秘的子序列,这个子序列是 $$S_1, S_2, \ldots, S_M$$,它是原序列的一部分,也就是说,子序列可以通过删除原序列中的一些(也可能是零个)元素得到。 小然发现,如果他按非递减顺序对这个子序列进行排序,然后计算出子序列中满足 $$S_i = i$$(其中 $$1 \leq i \leq |S|$$)的元素的数量,这个数量就是这个子序列的 "神秘度"。他对这些神秘数字非常好奇,于是决定计算这块石板的所有非空子序列的 "神秘度" 之和。 然而,小然面临一个问题,那就是这个数字可能非常的大,以至于他无法计算出来。他决定将这个数字对 $$10^9+7$$ 取模,以便于计算。你能帮助小然解决这个问题吗? ### 输入格式 输入的第一行包含一个整数 $$T$$,表示测试用例的数量。接下来是 $$T$$ 行,每行包含一个测试用例。 每个测试用例的第一行包含一个整数 $$N$$,表示石板上的数字数量。第二行包含 $$N$$ 个用空格隔开的整数 $$A_1, A_2, \ldots, A_N$$,表示石板上的数字序列。 ### 输出格式 对于每个测试用例,输出一个整数,表示所有非空子序列的 "神秘度" 之和对 $$10^9+7$$ 取模的结果。 ### 样例输入 ```text 4 2 1 2 5 3 2 5 5 3 4 1 1 2 1 6 6 4 5 2 3 1 ``` ### 样例输出 ```text 3 5 17 63 ``` ### 说明 在第一个测试用例中,给定的序列是 $$[1, 2]$$。有 $3$ 个可能的非空子序列: - $$[1]$$,其 "神秘度" 为 $1$,因为 $$S_1 = 1$$。 - $$[2]$$,其 "神秘度" 为 $0$。 - $$[1, 2]$$,其 "神秘度" 为 $2$,因为 $$S_1 = 1$$ 和 $$S_2 = 2$$。 因此,总的 "神秘度" 之和为 $$1 + 0 + 2 = 3$$。 ### 评测数据范围 $$1 \leq T \leq 10^5$$。 $$1 \leq N \leq 10^5$$。 $$1 \leq A_i \leq N$$ (其中 $$1 \leq i \leq N$$)。 所有测试用例的 $$N$$ 之和不超过 $$2 \times 10^5$$。
查看答案
赣ICP备20007335号-2