#codefestival2017qualaf. [code_festival_2017_quala_f]Squeezing Slimes
[code_festival_2017_quala_f]Squeezing Slimes
题目描述
有 个史莱姆排成一行。最开始,所有史莱姆的大小都是 。
Snuke 可以重复进行以下操作:
- 选择一个正偶数 。然后,从这些史莱姆中选择 个连续的史莱姆,并按照以下方式将它们组成 对:将左起第 和第 个史莱姆组成一对,第 和第 个组成一对, ,第 和第 个组成一对。将每一对史莱姆合并为一个更大的史莱姆。合并后的史莱姆的大小等于合并前的各个史莱姆的大小之和。合并之前的 个史莱姆对的顺序与合并之后的 个史莱姆保持一致。
Snuke 希望达到恰好有 个史莱姆的情况,并且从左边起第 个()史莱姆的大小为 。请找出实现他的目标所需的最小操作次数。
注意: 不直接给出作为输入。假设 。
约束条件
- 是整数。
输入
输入以以下格式从标准输入给出:
输出
输出实现 Snuke 目标所需的最小操作次数。
示例输入1
2
3 3
示例输出1
2
一种实现 Snuke 目标的方法如下。这里,被选择的史莱姆用粗体标记。
- (1, 1, 1, 1, 1, 1) → (1, 2, 2, 1)
- (1, 2, 2, 1) → (3, 3)
示例输入2
4
2 1 2 2
示例输出2
2
一种实现 Snuke 目标的方法如下。
- (1, 1, 1, 1, 1, 1, 1) → (2, 1, 1, 1, 1, 1)
- (2, 1, 1, 1, 1, 1) → (2, 1, 2, 2)
示例输入3
1
1
示例输出3
0
示例输入4
10
3 1 4 1 5 9 2 6 5 3
示例输出4
10