#CF1621G. 加权递增子序列

加权递增子序列

加权递增子序列

  • 时间限制:1 秒
  • 内存限制:256 MiB

题目描述

给定一个长度为 nn 的整数序列 a1,a2,…,ana_1,a_2,\ldots,a_n。

下标序列 i1<i2<⋯<iki_1<i_2<\cdots<i_k 表示子序列 ai1,ai2,…,aika_{i_1},a_{i_2},\ldots,a_{i_k}。若对所有 1≤j<k1\le j<k 都有 aij<aij+1a_{i_j}<a_{i_{j+1}},则称它为递增子序列。

一个递增子序列的权值,是满足下述条件的元素 aija_{i_j} 的个数:存在下标 xx,使得 ik<x≤ni_k<x\le n 且 ax>aija_x>a_{i_j}。

求序列 aa 的所有非空递增子序列的权值之和,并对 109+710^9+7 取模。

输入格式

第一行一个整数 tt,表示测试用例数。

每个测试用例的第一行一个整数 nn,第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

输出格式

对每个测试用例输出一行一个整数,表示答案对 109+710^9+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][a_1]、[a2][a_2]、[a2,a3][a_2,a_3] 和 [a2,a4][a_2,a_4],每个权值均为 11,故答案为 44。

数据范围

对所有数据,1≤t≤10001\le t\le1000,1≤n≤2×1051\le n\le2\times10^5,1≤ai≤1091\le a_i\le10^9,且单个输入文件内所有测试用例的 nn 之和不超过 2×1052\times10^5。

子任务编号 分值 特殊限制
1 20 每组 n≤18n\le18 且单文件 ∑n≤80\sum n\le80
2 每组 n≤2500n\le2500 且单文件 ∑n≤2500\sum n\le2500
3 每组均满足 a1≥a2≥⋯≥ana_1\ge a_2\ge\cdots\ge a_n
4 40 无特殊限制

每个测试点独立计分。