#CF2128D. LDS 之和

LDS 之和

每次测试时间限制:22
内存限制:256256 兆字节
题目描述 你被给定一个排列 ^{∗} p1,,pnp_1, \ldots, p_n,且满足对于所有 1in21 \leq i \leq n-2 都有 max(pi,pi+1)>pi+2\max(p_i, p_{i+1}) > p_{i+2}

计算所有子数组 [pl,pl+1,,pr][p_l, p_{l+1}, \ldots, p_r] 的最长递减子序列 ^{†} 的长度之和,其中 1lrn1 \le l \le r \le n

^{∗} 长度为 nn 的排列是由 nn 个互不相同的整数 11nn 按任意顺序组成的数组。例如 [2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是(22 出现两次),[1,3,4][1,3,4] 也不是(n=3n=3 但数组中有 44)。

^{†} 给定一个大小为 b|b| 的数组 bb,一个长度为 kk 的递减子序列是指一组下标 i1,,iki_1, \ldots, i_k 满足:

  • 1i1<i2<<ikb1 \le i_1 < i_2 < \ldots < i_k \le |b|
  • bi1>bi2>>bikb_{i_1} > b_{i_2} > \ldots > b_{i_k}

输入
每个测试点包含多个测试用例。第一行包含一个整数 tt1t100001 \le t \le 10\,000)——测试用例的数量。
每个测试用例的第一行包含一个整数 nn3n5000003 \le n \le 500\,000)。
第二行包含 nn 个整数 p1,p2,,pnp_1, p_2, \ldots, p_n1pin1 \le p_i \le npip_i 两两不同)。
保证对于所有 1in21 \le i \le n-2max(pi,pi+1)>pi+2\max(p_i, p_{i+1}) > p_{i+2}
所有测试用例的 nn 之和不超过 500000500\,000


输出
对于每个测试用例,输出所有子数组的最长递减子序列的长度之和。


示例
输入

4
3
3 2 1
4
4 3 1 2
6
6 1 5 2 4 3
3
2 3 1

输出

10
17
40
8

注释
对于任意数组 aa,记 LDS(a)\text{LDS}(a)aa 的最长递减子序列的长度。

在第一个测试用例中,所有子数组都是递减的。

在第二个测试用例中:

  • $\text{LDS}([4]) = \text{LDS}([3]) = \text{LDS}([1]) = \text{LDS}([2]) = 1$
  • LDS([4,3])=LDS([3,1])=2\text{LDS}([4,3]) = \text{LDS}([3,1]) = 2LDS([1,2])=1\text{LDS}([1,2]) = 1
  • LDS([4,3,1])=3\text{LDS}([4,3,1]) = 3LDS([3,1,2])=2\text{LDS}([3,1,2]) = 2
  • LDS([4,3,1,2])=3\text{LDS}([4,3,1,2]) = 3

所以答案为 1+1+1+1+2+2+1+3+2+3=171+1+1+1+2+2+1+3+2+3 = 17