CF1621G Weighted Increasing Subsequences

发布时间 2023-12-23 23:12:49作者: 进击的C++

CF1621G Weighted Increasing Subsequences

你有一个长度为 \(n\) 的序列,定义 \(a\) 的一个长度为 \(k\) 的子序列为 \(a_{i_1},a_{i_2},\dots,a_{i_k}\)。由此,我们不难发现,\(a\) 的一个长度为 \(k\) 的子序列为上升子序列,当且仅当 \(\forall j\in[1,k)\)\(a_{i_j}<a_{i_{j+1}}\)
我们定义一个 \(a\) 的一个长度为 \(k\) 的上升子序列的权值为满足存在一个整数 \(x\in(i_k,n]\) 使得 \(a_x>a_{i_j}\) 的所有在 \([1,k]\) 内的整数 \(j\) 的个数。现在,请你求出 \(a\) 的所有上升子序列的权值和。由于答案可能很大,因此只需要输出答案对于 \(10^9+7\) 取模之后的结果即可。
对于 \(100\%\) 的数据,满足 \(1\leqslant t\leqslant 1000\)\(1\leqslant n,\sum n\leqslant 2\times 10^5\)\(1\leqslant a_i\leqslant 10^9\)