加权递增子序列
题目描述
给定一个长度为 n 的整数序列 a1,a2,…,an。
下标序列 i1<i2<⋯<ik 表示子序列 ai1,ai2,…,aik。若对所有 1≤j<k 都有 aij<aij+1,则称它为递增子序列。
一个递增子序列的权值,是满足下述条件的元素 aij 的个数:存在下标 x,使得 ik<x≤n 且 ax>aij。
求序列 a 的所有非空递增子序列的权值之和,并对 109+7 取模。
输入格式
第一行一个整数 t,表示测试用例数。
每个测试用例的第一行一个整数 n,第二行包含 n 个整数 a1,a2,…,an。
输出格式
对每个测试用例输出一行一个整数,表示答案对 109+7 取模的结果。
样例输入 1
4
5
6 4 8 6 5
4
1 2 3 4
3
3 2 2
4
4 5 6 5
样例输出 1
4
12
0
6
样例解释
在第一个测试用例中,权值非零的递增子序列为 [a1]、[a2]、[a2,a3] 和 [a2,a4],每个权值均为 1,故答案为 4。
数据范围
对所有数据,1≤t≤1000,1≤n≤2×105,1≤ai≤109,且单个输入文件内所有测试用例的 n 之和不超过 2×105。
| 子任务编号 |
分值 |
特殊限制 |
| 1 |
20 |
每组 n≤18 且单文件 ∑n≤80 |
| 2 |
每组 n≤2500 且单文件 ∑n≤2500 |
| 3 |
每组均满足 a1≥a2≥⋯≥an |
| 4 |
40 |
无特殊限制 |
每个测试点独立计分。