CF2154B.Make it Zigzag

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Make it Zigzag

题目描述

长度为 mm 的任意整数数组 bb 如果对于所有 ii1i<m1 \le i < m)满足以下条件,则被认为是“awesome”(极棒)的:

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

换句话说,数组需满足如下不等式:b1<b2>b3<b4b_1 < b_2 > b_3 < b_4 \ldots

给定一个长度为 nn 的正整数数组 aa。你可以按照任意顺序、任意多次执行以下两种操作:

  • 操作 11:选择一个整数 ii1in1 \le i \le n),令 ai:=max(a1,,ai)a_i := \max(a_1, \ldots, a_i),即将 aia_i 替换为前缀最大值。
  • 操作 22:选择一个整数 ii1in1 \le i \le n),然后将 aia_i 减少 11

请你求出使 aa 成为“awesome”数组所需执行操作 22 的最少次数。注意:你不需要最小化执行操作 11 的次数。

输入格式

每组测试包含多个测试用例。第一行输入测试用例的数量 tt1t1041 \le t \le 10^4)。接下来每组测试用例包含:

第一行输入一个整数 nn2n2×1052 \le n \le 2 \times 10^5),表示数组 aa 的长度。

第二行输入 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n1ai1091 \le a_i \le 10^9)。

所有测试用例中 nn 的总和不超过 2×1052 \times 10^5

输出格式

对于每组测试用例,输出使 aa 成为“awesome”数组所需执行操作 22 的最小次数。

说明/提示

在第一个测试用例中,数组已经是“awesome”的,无需任何操作。

在第二个测试用例中,可以按如下方式操作,使 aa 成为“awesome”:

  • 执行一次操作 22,将 a1a_1 减少 11:$[\color{red}3, 3, 2, 1] \rightarrow [\color{red}2, 3, 2, 1]$。
  • 执行一次操作 11,将 a4a_4 改为 max(2,3,2,1)=3\max(2, 3, 2, 1) = 3:$[2, 3, 2, \color{red}1] \rightarrow [2, 3, 2, \color{red}3]$。

[2,3,2,3][2, 3, 2, 3] 是“awesome”数组,因为 2<3>2<32 < 3 > 2 < 3。可以证明,这是使得 aa 成为“awesome”数组所需的最少操作 22 次数。

由 ChatGPT 5 翻译

样例

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

在线编程 IDE

建议全屏模式获得最佳体验