4332: 使序列递增
内存限制:128 MB
时间限制:1 S
标准输入输出
题目类型:传统
评测方式:文本比较
上传者:
提交:54
通过:23
题目描述
给你 n 个整数 a1, a2, ... , an 你可以对他们进行如下操作:
你需要找到最小的操作次数,使得序列严格递增(即 a1 < a2 < a3 < ... < an),或者不可能获得这样的序列。
注意元素之间不能交换位置,只能进行上述操作。
- 你可以选择任意元素 ai (1 <= i <= n) ,用 ai 除 2 的结果(下取整,只保留整数部分)替换它。
你需要找到最小的操作次数,使得序列严格递增(即 a1 < a2 < a3 < ... < an),或者不可能获得这样的序列。
注意元素之间不能交换位置,只能进行上述操作。
输入格式
输入的第一行包含一个整数 t (1 ≤ t ≤ 104) 表示测试用例组数。
测试用例的描述如下。
每个测试用例的第一行包含单个整数 n (1 ≤ n ≤ 30)。
每个测试用例的第二行正好包含 n 个整数 a1,a2, ... , an (0 ≤ ai ≤ 2⋅109)。
测试用例的描述如下。
每个测试用例的第一行包含单个整数 n (1 ≤ n ≤ 30)。
每个测试用例的第二行正好包含 n 个整数 a1,a2, ... , an (0 ≤ ai ≤ 2⋅109)。
输出格式
对于每个测试用例,在单独的一行上打印一个数字表示对序列执行的最小操作数,以使其严格增加。
如果无法获得严格递增的顺序,请打印“-1”。
如果无法获得严格递增的顺序,请打印“-1”。
输入样例 复制
7
3
3 6 5
4
5 3 2 1
5
1 2 3 4 5
1
1000000000
4
2 8 7 5
5
8 26 5 21 10
2
5 14
输出样例 复制
2
-1
0
0
4
11
0
数据范围与提示
对于第一组测试样例:
对于第二组测试样例:
不可能获得严格递增的序列,输出-1。
对于第三组测试样例:
已经是严格递增的序列无需操作,输出0。
- 选择 a2 = 6 将其替换为 [6/2] = 3 ,得到序列为 3, 3, 5;
- 选择 a1 = 3 将其替换为 [3/2] = 1,得到序列为 1, 3, 5;
对于第二组测试样例:
不可能获得严格递增的序列,输出-1。
对于第三组测试样例:
已经是严格递增的序列无需操作,输出0。