AT_code_festival_2017_quala_f Squeezing Slimes
题目描述
有 $A$ 只史莱姆横向排成一行。最初,所有史莱姆的大小都是 $1$。
すぬけ君可以重复进行以下操作:
- 选择一个正的偶数 $M$。选择连续的 $M$ 只史莱姆,将它们分别按照从左到右的第 $(1, 2)$、$(3, 4)$……、$(M - 1, M)$ 只史莱姆组成一组,两两配对。然后,每组中的 $2$ 只史莱姆合成为 $1$ 只史莱姆,合成后的史莱姆大小等于合成前两只史莱姆大小之和。合成后得到 $M/2$ 只史莱姆,并保持合成前各组的顺序不变。
すぬけ君的目标是让史莱姆恰好剩下 $N$ 只,并且第 $i$ 只史莱姆的大小恰好为 $a_i$($1 \leq i \leq N$)。请你求出すぬけ君达成目标所需的最小操作次数。
注意,$A$ 不作为输入给出,而是 $A = a_1 + a_2 + \cdots + a_N$。
输入格式
输入按如下格式从标准输入读入:
> $N$ $a_1$ $a_2$ $\cdots$ $a_N$
输出格式
请输出すぬけ君达成目标所需的最小操作次数。
说明/提示
## 限制条件
- $1 \leq N \leq 10^5$
- $a_i$ 是整数。
- $1 \leq a_i \leq 10^9$
## 样例解释 1
可以按如下方式进行操作。操作对象的史莱姆用粗体表示。
- (1, **1**, **1**, **1**, **1**, 1) → (1, **2**, **2**, 1)
- (**1**, **2**, **2**, **1**) → (**3**, **3**)
## 样例解释 2
可以按如下方式进行操作:
- (**1**, **1**, 1, 1, 1, 1, 1) → (**2**, 1, 1, 1, 1, 1)
- (2, 1, **1**, **1**, **1**, **1**) → (2, 1, **2**, **2**)
由 ChatGPT 5 翻译