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 翻译