U457119 合并石子
题目描述
小 C 有 $n$ 堆石子,初始时第 $i$ 堆有 $a_i$ 个。
小 C 可以对这些石子进行以下操作:
1. 向任意一堆石子中添加一个石子;
2. 将两堆**数量相同**的石子合并为一堆石子,新的这堆石子的数量为合并前两堆石子的数量之和。
小 C 想使用尽量少的操作 $1$ 使得 $n$ 堆石子合并为一堆。你需要求出操作 $1$ 最少需要进行多少次。
输入格式
第一行,输入一个正整数 $n$,表示石子的堆数。
第二行,输入 $n$ 个正整数,第 $i$ 个为 $a_i$,表示第 $i$ 堆石子的石子数量。
输出格式
共一行,输出一个正整数,表示最少需要进行几次操作 $1$。
说明/提示
**【样例解释】**
对于样例 $1$,各堆石子数量变化如下:
- $1,2,3,4,5\to2,2,3,4,5$(进行 $1$ 次操作 $1$);
- $2,2,3,4,5\to4,3,4,5$(进行 $1$ 次操作 $2$);
- $4,3,4,5\to4,4,4,5$(进行 $1$ 次操作 $1$);
- $4,4,4,5\to8,4,5$(进行 $1$ 次操作 $2$);
- $8,4,5\to 8,5,5$(进行 $1$ 次操作 $1$);
- $8,5,5\to8,10$(进行 $1$ 次操作 $2$);
- $8,10\to 10,10$(进行 $2$ 次操作 $1$);
- $10,10\to20$(进行 $1$ 次操作 $2$)。
总共进行了 $5$ 次操作 $1$。可以说明不存在更优的方案。
对于样例 $2$,依次将 $1,1$、$2,2$、$4,4$、$8,8$ 合并即可,不需要进行操作 $1$。
**【数据规模与约束】**
本题采用子任务捆绑测试。
|子任务|$n$|特殊性质|分值|
| :----------: | :----------: | :----------: | :----------: |
|$1$|$\leq 5$|无|$5$|
|$2$|$\leq 15$|无|$15$|
|$3$|$\leq 5\times10^5$|$a_i=1$|$15$|
|$4$|$\leq 5\times10^3$|无|$15$|
|$5$|$\leq 2\times10^5$|无|$20$|
|$6$|$\leq 5\times 10^5$|无|$30$|
对于所有测试点,保证 $1\leq n\leq 5\times10^5,1\leq a_i\leq 10^9$。