CF2081B.Balancing

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Ecrade 有一个整数数组 a1,a2,…,ana_1, a_2, \ldots, a_n。保证对于每个 1≤i<n1 \le i < n,ai≠ai+1a_i \neq a_{i+1}。

Ecrade 可以通过若干次操作将数组变为严格递增的数组。

每次操作中,他可以选择两个整数 ll 和 rr(1≤l≤r≤n1 \le l \le r \le n),并将 al,al+1,…,ara_l, a_{l+1}, \ldots, a_r 替换为任意 r−l+1r-l+1 个整数 al′,al+1′,…,ar′a'_l, a'_{l+1}, \ldots, a'_r。替换后的数组需要满足以下约束:

  • 对于每个 l≤i<rl \le i < r,ai′a'_i 和 ai+1′a'_{i+1} 之间的比较关系必须与原数组中 aia_i 和 ai+1a_{i+1} 的比较关系相同。即,若原数组中 ai<ai+1a_i < a_{i+1},则替换后必须有 ai′<ai+1′a'_i < a'_{i+1};若原数组中 ai>ai+1a_i > a_{i+1},则替换后必须有 ai′>ai+1′a'_i > a'_{i+1};若原数组中 ai=ai+1a_i = a_{i+1},则替换后必须有 ai′=ai+1′a'_i = a'_{i+1}。

Ecrade 想知道使数组严格递增所需的最少操作次数。由于问题有一定难度,请你帮助他!

输入格式

每个测试包含多个测试用例。第一行输入测试用例数量 tt(1≤t≤1041 \le t \le 10^4)。接下来描述每个测试用例。

每个测试用例的第一行输入一个整数 nn(2≤n≤2⋅1052 \le n \le 2 \cdot 10^5)。

每个测试用例的第二行输入 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(−109≤ai≤109-10^9 \le a_i \le 10^9)。

保证对于每个 1≤i<n1 \le i < n,ai≠ai+1a_i \neq a_{i+1}。

保证所有测试用例的 nn 总和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例,输出一个整数表示使数组严格递增所需的最少操作次数。

输入输出样例

  • 输入#1

    4
    3
    3 2 1
    3
    3 1 2
    4
    -2 -5 5 2
    7
    1 9 1 9 8 1 0

    输出#1

    2
    1
    1
    3

说明/提示

第一个测试用例中,一种获得最少操作次数的方式为:

  1. 第一次操作选择 l=2,r=2l = 2, r = 2,将 a2′=4a'_2 = 4,此时数组变为 [3,4,1][3, 4, 1];
  2. 第二次操作选择 l=1,r=2l = 1, r = 2,将 a1′=−1,a2′=0a'_1 = -1, a'_2 = 0,此时数组变为 [−1,0,1][-1, 0, 1]。

第二个测试用例中,一种获得最少操作次数的方式为:

  1. 第一次操作选择 l=2,r=3l = 2, r = 3,将 a2′=4,a3′=5a'_2 = 4, a'_3 = 5,此时数组变为 [3,4,5][3, 4, 5]。

第三个测试用例中,一种获得最少操作次数的方式为:

  1. 第一次操作选择 l=2,r=3l = 2, r = 3,将 a2′=−1,a3′=1a'_2 = -1, a'_3 = 1,此时数组变为 [−2,−1,1,2][-2, -1, 1, 2]。

翻译由 DeepSeek R1 完成

输入解题思路,AI测评打分。不知道怎么写?

首页