CF2081B Balancing
题目描述
Ecrade 有一个整数数组 $a_1, a_2, \ldots, a_n$。保证对于每个 $1 \le i < n$,$a_i \neq a_{i+1}$。
Ecrade 可以通过若干次操作将数组变为严格递增的数组。
每次操作中,他可以选择两个整数 $l$ 和 $r$($1 \le l \le r \le n$),并将 $a_l, a_{l+1}, \ldots, a_r$ 替换为任意 $r-l+1$ 个整数 $a'_l, a'_{l+1}, \ldots, a'_r$。替换后的数组需要满足以下约束:
- 对于每个 $l \le i < r$,$a'_i$ 和 $a'_{i+1}$ 之间的比较关系必须与原数组中 $a_i$ 和 $a_{i+1}$ 的比较关系相同。即,若原数组中 $a_i < a_{i+1}$,则替换后必须有 $a'_i < a'_{i+1}$;若原数组中 $a_i > a_{i+1}$,则替换后必须有 $a'_i > a'_{i+1}$;若原数组中 $a_i = a_{i+1}$,则替换后必须有 $a'_i = a'_{i+1}$。
Ecrade 想知道使数组严格递增所需的最少操作次数。由于问题有一定难度,请你帮助他!
输入格式
每个测试包含多个测试用例。第一行输入测试用例数量 $t$($1 \le t \le 10^4$)。接下来描述每个测试用例。
每个测试用例的第一行输入一个整数 $n$($2 \le n \le 2 \cdot 10^5$)。
每个测试用例的第二行输入 $n$ 个整数 $a_1, a_2, \ldots, a_n$($-10^9 \le a_i \le 10^9$)。
保证对于每个 $1 \le i < n$,$a_i \neq a_{i+1}$。
保证所有测试用例的 $n$ 总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,输出一个整数表示使数组严格递增所需的最少操作次数。
说明/提示
第一个测试用例中,一种获得最少操作次数的方式为:
1. 第一次操作选择 $l = 2, r = 2$,将 $a'_2 = 4$,此时数组变为 $[3, 4, 1]$;
2. 第二次操作选择 $l = 1, r = 2$,将 $a'_1 = -1, a'_2 = 0$,此时数组变为 $[-1, 0, 1]$。
第二个测试用例中,一种获得最少操作次数的方式为:
1. 第一次操作选择 $l = 2, r = 3$,将 $a'_2 = 4, a'_3 = 5$,此时数组变为 $[3, 4, 5]$。
第三个测试用例中,一种获得最少操作次数的方式为:
1. 第一次操作选择 $l = 2, r = 3$,将 $a'_2 = -1, a'_3 = 1$,此时数组变为 $[-2, -1, 1, 2]$。
翻译由 DeepSeek R1 完成