小青蛙跳跳 I
Submit solution
Points:
300
Time limit:
1.0s
Memory limit:
8M
Author:
Problem type
Allowed languages
C, C++
https://atcoder.jp/contests/dp/tasks/dp_a
有 N 个平台,每个平台从 \(1\) 到 \(N\) 编号。第 \(i\) 个平台的高度为 \(h_i\)。
一开始,小青蛙在 第 \(1\) 个平台上。它想跳到 第 \(N\) 个平台,可以进行如下操作:
如果它现在在第 \(i\) 个平台上,可以跳到 \(i+1\) 或 \(i+2\) 的平台。
每次跳跃的花费是平台之间高度差的绝对值,即从平台 \(i\) 跳到 \(j\),花费为 \(\left|h_i - h_j \right|\)。
请你计算,小青蛙从平台 \(1\) 跳到平台 \(N\) 所需的最小总花费是多少?
输入格式
第一行输入整数 N(平台数量)。
第二行输入 N 个整数,表示每个平台的高度 \(h_1, h_2, ..., h_N\)。
输出格式
输出一个整数,表示最小总花费。
约束条件
\(2 \le N \le 10^5\)
\(1 \le h_i \le 10^4\)
输入均为整数
输入样例 1
4
10 30 40 20
出样例 1
30
说明:路径为平台 1 → 2 → 4,跳跃花费为:
\(\left|10-30 \right| = 20\)
\(\left|30-20 \right| = 10\)
总共:20 + 10 = 30
输入样例 2
2
10 10
出样例 2
0
说明:跳一次就到终点了,且两平台高度相同,花费为 0。
输入样例 3
6
30 10 60 10 60 50
输出样例 3
40
说明:路径为 1 → 3 → 5 → 6:
\(\left|30-60 \right| = 30\)
\(\left|60-60 \right| = 0\)
\(\left|60-50\right| = 10\)
总共:30 + 0 + 10 = 40
Comments