CF1995C.Squaring

普及+/提高

通过率:0%

AC君温馨提醒

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

题目描述

ikrpprpp 找到了一组由整数构成的数组 aa。他热爱正义,因此他希望让 aa 变得“公平”——也就是让它变为非递减数组。为此,他可以对数组中 1≤i≤n1 \le i \le n 的某个下标执行一次“正义之举”,即将 aia_i 替换为 ai2a_i^2(即将第 ii 个元素替换为它的平方)。例如,如果 a=[2,4,3,3,5,3]a = [2,4,3,3,5,3],ikrpprpp 选择对 i=4i = 4 执行一次正义之举后,aa 变为 [2,4,3,9,5,3][2,4,3,9,5,3]。

请你求出最少需要多少次正义之举,才能使数组 aa 变为非递减数组。

输入格式

第一行包含一个整数 tt(1≤t≤10001 \le t \le 1000),表示测试用例的数量。接下来是每个测试用例的描述。

对于每个测试用例,第一行包含一个整数 nn,表示数组 aa 的长度。第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤1061 \le a_i \le 10^6)。

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

输出格式

对于每个测试用例,输出一个整数,表示使数组 aa 变为非递减数组所需的最少正义之举次数。如果无法做到,输出 −1-1。

输入输出样例

  • 输入#1

    7
    3
    1 2 3
    2
    3 2
    3
    3 1 5
    4
    1 1 2 3
    3
    4 3 2
    9
    16 2 4 2 256 2 4 2 8
    11
    10010 10009 10008 10007 10006 10005 10004 10003 10002 10001 10000

    输出#1

    0
    1
    -1
    0
    3
    15
    55

说明/提示

在第一个测试用例中,不需要执行任何正义之举,数组本身就是公平的!

在第三个测试用例中,可以证明无法将数组变为非递减数组。

在第五个测试用例中,ikrpprppp 可以先对下标 3 执行一次正义之举,再对下标 2 执行一次,最后再对下标 3 执行一次。此后,aa 将变为 [4,9,16][4, 9, 16]。

由 ChatGPT 4.1 翻译

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

首页