CF1338A Powered Addition
题目描述
你有一个长度为 $n$ 的数组 $a$。对于每一个正整数 $x$,你将在第 $x$ 秒执行以下操作:
- 选择一些不同的下标 $i_{1}, i_{2}, \ldots, i_{k}$($1 \le i_j \le n$),并将 $2^{x-1}$ 加到 $a$ 的对应位置上。形式化地说,对于 $j = 1, 2, \ldots, k$,有 $a_{i_{j}} := a_{i_{j}} + 2^{x-1}$。注意,你可以选择不选任何下标。
你需要尽快使数组 $a$ 变为非递减。请找出最小的整数 $T$,使得在最多 $T$ 秒后,你可以将数组 $a$ 变为非递减。
数组 $a$ 是非递减的,当且仅当 $a_{1} \le a_{2} \le \ldots \le a_{n}$。
你需要回答 $t$ 组独立的测试用例。
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^{4}$),表示测试用例的数量。
每组测试用例的第一行包含一个整数 $n$($1 \le n \le 10^{5}$),表示数组 $a$ 的长度。保证所有测试用例中 $n$ 的总和不超过 $10^{5}$。
每组测试用例的第二行包含 $n$ 个整数 $a_{1}, a_{2}, \ldots, a_{n}$($-10^{9} \le a_{i} \le 10^{9}$)。
输出格式
对于每组测试用例,输出一个整数,表示使数组 $a$ 变为非递减所需的最小秒数。
说明/提示
在第一个测试用例中,如果你在第 $1$ 秒选择下标 $3, 4$,在第 $2$ 秒选择下标 $4$,则 $a$ 会变为 $[1, 7, 7, 8]$。还有其他方法可以在 $2$ 秒内使 $a$ 非递减,但无法更快完成。
在第二个测试用例中,$a$ 已经是非递减的,所以答案是 $0$。
在第三个测试用例中,如果你前 $2$ 秒什么都不做,在第 $3$ 秒选择下标 $2$,则 $a$ 会变为 $[0, 0]$。
由 ChatGPT 4.1 翻译