问题2046--魔法伐竹

2046: 魔法伐竹

时间限制: 1 Sec  内存限制: 128 MB
提交: 31  解决: 8
[提交] [状态] [讨论版] [命题人:]

题目描述

深山里有一伐木高人,修炼了一身伐木魔法,他面前有 n 棵竹子排成一排, 一开始第 i 棵竹子的 高度为hi。他觉得一根根地砍太慢了,决定使用魔法来砍竹子。魔法可以对连续的多根相同高度的竹子使用,假设这些竹子的高度均为 H ,那么使用一次魔法可以把这些竹子的高度都变为,其中H⌋表示对H向下取整。作为已经有过算法学习经历的你,请编程计算此伐木高人最少要使用多少次魔法可以让所有的竹子的高度变为 1 。

输入

第一行输入一个正整数 n,表示竹子的根数。第二行输入 n 个用空格分开的正整数 hi,表示每棵竹子的高度。

输出

输出一个整数表示答案。

样例输入 Copy

6
2 1 4 2 6 7

样例输出 Copy

5

提示

样例解释:

其中一种方案:

2 1 4 2 6 7

→ 2 1 4 2 6 2
→ 2 1 4 2 2 2
→ 2 1 1 2 2 2
→ 1 1 1 2 2 2
→ 1 1 1 1 1 1
共需要 5 步完成。

对于20%的测试数据,n≤1000,hi≤106;
对于100%的测试数据,n≤2×105,hi≤1018

来源/分类