CF1883E.Look Back

普及+/提高

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

You are given an array of integers a1,a2,…,ana_1, a_2, \ldots, a_n. You need to make it non-decreasing with the minimum number of operations. In one operation, you do the following:

  • Choose an index 1≤i≤n1 \leq i \leq n,
  • Set ai=ai⋅2a_i = a_i \cdot 2.

An array b1,b2,…,bnb_1, b_2, \ldots, b_n is non-decreasing if bi≤bi+1b_i \leq b_{i+1} for all 1≤i<n1 \leq i \lt n.

给你一个整数数组 a1,a2,…,ana_1, a_2, \ldots, a_n。你需要通过最少的操作次数使其变为非递减数组。每次操作中,你需执行以下步骤:

  • 选择一个下标 1≤i≤n1 \leq i \leq n,
  • 将 aia_i 更新为 ai⋅2a_i \cdot 2。

数组 b1,b2,…,bnb_1, b_2, \ldots, b_n 是非递减的,当且仅当对所有 1≤i<n1 \leq i \lt n 均满足 bi≤bi+1b_i \leq b_{i+1}。

输入格式

Each test consists of multiple test cases. The first line contains a single integer tt (1≤t≤1041 \leq t \leq 10^4) — the number of test cases. This is followed by their description.

The first line of each test case contains an integer nn (1≤n≤1051 \leq n \leq 10^5) — the size of the array aa.

The second line of each test case contains nn integers a1,a2,…,ana_1, a_2, \ldots, a_n (1≤ai≤1091 \leq a_i \leq 10^9).

It is guaranteed that the sum of nn over all test cases does not exceed 2⋅1052 \cdot 10^5.

每个测试包含多个测试用例。第一行包含一个整数 tt(1≤t≤1041 \leq t \leq 10^4),表示测试用例的数量。随后是各测试用例的描述。

每个测试用例的第一行包含一个整数 nn(1≤n≤1051 \leq n \leq 10^5),表示数组 aa 的大小。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤1091 \leq a_i \leq 10^9)。

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

输出格式

For each test case, output the minimum number of operations needed to make the array non-decreasing.

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

输入输出样例

  • 输入#1

    9
    1
    1
    2
    2 1
    3
    3 2 1
    4
    7 1 5 3
    5
    11 2 15 7 10
    6
    1 8 2 16 8 16
    2
    624323799 708290323
    12
    2 1 1 3 3 11 12 22 45 777 777 1500
    12
    12 11 10 9 8 7 6 5 4 3 2 1

    输出#1

    0
    1
    3
    6
    10
    3
    0
    2
    66

说明/提示

No operations are needed in the first test case.

In the second test case, we need to choose i=2i = 2, after which the array will be [2,2][2, 2].

In the third test case, we can apply the following operations:

  • Choose i=3i = 3, after which the array will be [3,2,2][3, 2, 2],
  • Choose i=3i = 3, after which the array will be [3,2,4][3, 2, 4],
  • Choose i=2i = 2, after which the array will be [3,4,4][3, 4, 4].

第一个测试用例中无需进行任何操作。

第二个测试用例中,我们需要选择 i=2i = 2,操作后数组将变为 [2,2][2, 2]。

第三个测试用例中,我们可以执行以下操作:

  • 选择 i=3i = 3,操作后数组将变为 [3,2,2][3, 2, 2],
  • 选择 i=3i = 3,操作后数组将变为 [3,2,4][3, 2, 4],
  • 选择 i=2i = 2,操作后数组将变为 [3,4,4][3, 4, 4]。

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

首页