CF1338A.Powered Addition
普及/提高-
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You have an array a of length n. For every positive integer x you are going to perform the following operation during the x-th second:
- Select some distinct indices i1,i2,…,ik which are between 1 and n inclusive, and add 2x−1 to each corresponding position of a. Formally, aij:=aij+2x−1 for j=1,2,…,k. Note that you are allowed to not select any indices at all.
You have to make a nondecreasing as fast as possible. Find the smallest number T such that you can make the array nondecreasing after at most T seconds.
Array a is nondecreasing if and only if a1≤a2≤…≤an.
You have to answer t independent test cases.
你有一个长度为 n 的数组 a。对于每个正整数 x,你将在第 x 秒执行以下操作:
- 选择若干互不相同的下标 i1,i2,…,ik,其中每个下标均在 1 到 n 之间(含端点),并对数组 a 中这些位置的元素各加上 2x−1。形式化地,对每个 j=1,2,…,k,执行 aij:=aij+2x−1。注意:你也可以不选择任何下标(即 k=0)。
你需要尽快使数组 a 变为非递减序列。请找出最小的整数 T,使得你能在至多 T 秒内将该数组变为非递减序列。
数组 a 是非递减的,当且仅当满足 a1≤a2≤…≤an。
你需要回答 t 个相互独立的测试用例。
输入格式
The first line contains a single integer t (1≤t≤104) — the number of test cases.
The first line of each test case contains single integer n (1≤n≤105) — the length of array a. It is guaranteed that the sum of values of n over all test cases in the input does not exceed 105.
The second line of each test case contains n integers a1,a2,…,an (−109≤ai≤109).
第一行包含一个整数 t(1≤t≤104)—— 测试用例的数量。
每个测试用例的第一行包含一个整数 n(1≤n≤105)—— 数组 a 的长度。保证输入中所有测试用例的 n 值之和不超过 105。
每个测试用例的第二行包含 n 个整数 a1,a2,…,an(−109≤ai≤109)。
输出格式
For each test case, print the minimum number of seconds in which you can make a nondecreasing.
对于每个测试用例,输出使 a 变为非递减序列所需的最少秒数。
输入输出样例
输入#1
3 4 1 7 6 5 5 1 2 3 4 5 2 0 -4
输出#1
2 0 3
说明/提示
In the first test case, if you select indices 3,4 at the 1-st second and 4 at the 2-nd second, then a will become [1,7,7,8]. There are some other possible ways to make a nondecreasing in 2 seconds, but you can't do it faster.
In the second test case, a is already nondecreasing, so answer is 0.
In the third test case, if you do nothing at first 2 seconds and select index 2 at the 3-rd second, a will become [0,0].
在第一个测试用例中,若你在第 1 秒选择下标 3,4,并在第 2 秒选择下标 4,则数组 a 将变为 [1,7,7,8]。还有其他一些在 2 秒内使 a 变为非递减数组的方法,但无法更快完成。
在第二个测试用例中,a 已经是非递减的,因此答案为 0。
在第三个测试用例中,若你在前 2 秒什么都不做,并在第 3 秒选择下标 2,则 a 将变为 [0,0]。
输入解题思路,AI测评打分。不知道怎么写?