首页 > 试题广场 >

小苯的格子移动

[编程题]小苯的格子移动
  • 热度指数:2 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
数轴上有 n 个格子,标号分别从 1n,其中第 i 个格子的解锁时间为 a_i,也就是说在第 a_i 秒之后(包括第 a_i 秒)此格子才可以到达。

假设小苯目前位于第 i 个格子,则小苯每秒钟可以做以下两种移动之一:
\bullet 移动到第 i+1 格,前提是第 i+1 个格子已经解锁。
\bullet 停在当前所在格子不移动。

小苯位于第 1 个格子,(保证 a_1 = 0),小苯想知道,他最少需要多少秒可以移动到第 n 个格子。

输入描述:
本题包含多组测试数据。
第一行一个正整数 T\ (1 \leq T \leq 100),表示测试数据的组数。
接下来对于每组测试数据:
输入包含两行。
第一行一个正整数 n\ (1 \leq n \leq 200000 表示有 n 个格子。
第二行 n 个整数,表示第 i 个格子解锁的时间,a_i\ (0 \leq a_i \leq 10^9)。(保证 a_1 = 0)。
(保证所有测试数据中,n 的总和不超过 200000。)


输出描述:
输出包含 T 行。
对于每组测试数据,输出一个整数表示到达第 n 个格子的最短秒数。
示例1

输入

2
5
0 2 4 2 4
4
0 3 5 10

输出

6
10

说明

对于第一组测试数据:
第一秒在 i = 1 等待一秒,
第二秒移动到 i = 2,
第三秒在 i = 2 等待一秒,
第四秒移动到 i = 3,
第五秒移动到 i = 4,
第六秒移动到 i = 5,到达第 n 个格子,用时 6 秒。

这道题你会答吗?花几分钟告诉大家答案吧!