CF1995C.Squaring
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
ikrpprpp 找到了一组由整数构成的数组 a。他热爱正义,因此他希望让 a 变得“公平”——也就是让它变为非递减数组。为此,他可以对数组中 1≤i≤n 的某个下标执行一次“正义之举”,即将 ai 替换为 ai2(即将第 i 个元素替换为它的平方)。例如,如果 a=[2,4,3,3,5,3],ikrpprpp 选择对 i=4 执行一次正义之举后,a 变为 [2,4,3,9,5,3]。
请你求出最少需要多少次正义之举,才能使数组 a 变为非递减数组。
输入格式
第一行包含一个整数 t(1≤t≤1000),表示测试用例的数量。接下来是每个测试用例的描述。
对于每个测试用例,第一行包含一个整数 n,表示数组 a 的长度。第二行包含 n 个整数 a1,a2,…,an(1≤ai≤106)。
所有测试用例中 n 的总和不超过 2⋅105。
输出格式
对于每个测试用例,输出一个整数,表示使数组 a 变为非递减数组所需的最少正义之举次数。如果无法做到,输出 −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 执行一次。此后,a 将变为 [4,9,16]。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?