#CF2154B. Make it Zigzag

Make it Zigzag

B. 使其变成锯齿形

每个测试的时间限制:1.5 秒
每个测试的内存限制:256 兆字节

如果一个长度为 mm 的任意整数数组 bb 满足:对于所有 i (1i<m)i\ (1 \le i < m)

  • ii 是奇数,则 bi<bi+1b_i < b_{i+1}
  • ii 是偶数,则 bi>bi+1b_i > b_{i+1}

则称数组 bbawesome(极好的)。
换句话说,不等式 b1<b2>b3<b4>b_1 < b_2 > b_3 < b_4 > \dots 成立。


你有一个长度为 nn 的正整数数组 aa
你可以任意多次执行以下两种操作,顺序不限:

  1. 操作 1:选择一个下标 i (1in)i\ (1 \le i \le n),并执行
    ai:=max(a1,,ai)a_i := \max(a_1, \dots, a_i),即将 aia_i 替换为到 ii 为止的前缀最大值。
  2. 操作 2:选择一个下标 i (1in)i\ (1 \le i \le n),然后将 aia_i 减少 11

你需要最小化操作 2 的次数,使得数组 aa 变成 awesome
注意:你不需要最小化操作 1 的次数。


输入格式

每个测试包含多个测试用例。
第一行输入一个整数 t (1t104)t\ (1 \le t \le 10^4),表示测试用例的数量。

接下来每个测试用例的输入格式如下:

  • 第一行输入一个整数 n (2n2105)n\ (2 \le n \le 2 \cdot 10^5),表示数组 aa 的长度。
  • 第二行输入 nn 个整数 a1,a2,,an (1ai109)a_1, a_2, \dots, a_n\ (1 \le a_i \le 10^9)

保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5


输出格式

对于每个测试用例,输出使数组 aa 变成 awesome 所需的最少操作 2 的次数。


示例

输入:

7
5
1 4 2 5 3
4
3 3 2 1
5
6 6 6 6 6
7
1 2 3 4 5 6 7
3
3 2 1
2
1 2
9
65 85 19 53 21 79 92 29 96

输出:

0
1
3
6
1
0
13

示例解释

  • 第一个测试用例:数组已经是 awesome,所以不需要任何操作。
  • 第二个测试用例:可以通过以下步骤使数组变成 awesome:
    1. 使用操作 2,将 a1a_1 减少 1:[3,3,2,1][2,3,2,1][3,3,2,1] \to [2,3,2,1]
    2. 使用操作 1,将 a4a_4 改为 max(2,3,2,1)=3\max(2,3,2,1) = 3[2,3,2,1][2,3,2,3][2,3,2,1] \to [2,3,2,3]
      得到 [2,3,2,3][2,3,2,3],满足 2<3>2<32 < 3 > 2 < 3
      可以证明这是最少的操作 2 次数。