CF1883E Look Back

题目描述

给定一个整数数组 $a_1, a_2, \ldots, a_n$,你需要通过最少的操作次数将其变为非递减数组。每次操作可以执行以下步骤: - 选择一个下标 $1 \leq i \leq n$, - 将 $a_i$ 变为 $a_i \cdot 2$。 如果对于所有 $1 \leq i < n$,都有 $b_i \leq b_{i+1}$,则数组 $b_1, b_2, \ldots, b_n$ 为非递减数组。

输入格式

每个测试点包含多组测试用例。第一行包含一个整数 $t$($1 \leq t \leq 10^4$),表示测试用例的数量。接下来是每个测试用例的描述。 每个测试用例的第一行包含一个整数 $n$($1 \leq n \leq 10^5$),表示数组 $a$ 的长度。 每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq 10^9$)。 保证所有测试用例中 $n$ 的总和不超过 $2 \times 10^5$。

输出格式

对于每个测试用例,输出使数组变为非递减所需的最小操作次数。

说明/提示

第一个测试用例不需要任何操作。 在第二个测试用例中,需要选择 $i = 2$,此时数组变为 $[2, 2]$。 在第三个测试用例中,可以按如下方式操作: - 选择 $i = 3$,此时数组变为 $[3, 2, 2]$, - 选择 $i = 3$,此时数组变为 $[3, 2, 4]$, - 选择 $i = 2$,此时数组变为 $[3, 4, 4]$。 由 ChatGPT 4.1 翻译