题目背景
翻译自 ROIR 2016 D2T4。
题目描述
如果一个整数数列 a1,a2,…,an 满足其中每个数(除了 a1 和 an)等于其相邻两个数的和,即 $a_2 = a_1 + a_3, a_3 = a_2 + a_4, \dots, a_{n-1} = a_{n-2} + a_n$,那么我们称这个序列为和谐数列。
例如,数列 [1,2,1,−1] 是和谐数列,因为 2=1+1,且 1=2+(−1)。
现在考虑两个相同长度的数列 A=[a1,a2,…,an] 和 B=[b1,b2,…,bn]。我们定义它们之间的距离为:
$$d(A, B) = |a_1 - b_1| + |a_2 - b_2| + \dots + |a_n - b_n|
$$
例如,$d([1, 2, 1, {-1}], [1, 2, 0, 0]) = |1 - 1| + |2 - 2| + |1 - 0| + |{-1} - 0| = 0 + 0 + 1 + 1 = 2$。
现有一个数列 B=[b1,b2,…,bn],需要找出一个和谐数列 A=[a1,a2,…,an],使得 d(A,B) 最小。你只需要求出 d(A,B) 的最小值即可。
输入格式
第一行输入一个整数 n,表示数列的长度(3≤n≤300000)。
第二行输入 n 个整数 b1,b2,…,bn(−109≤bi≤109)。
输出格式
输出一个整数,表示 d(A,B) 的最小值。
4
1 2 0 0
2
提示
样例解释
在样例中,可以令 A=[1,2,1,−1],这样 d([1,2,1,−1],[1,2,0,0])=2。可以证明 d(A,B) 不可能小于 2。
数据范围
子任务 |
是否捆绑 |
分值 |
3≤n≤ |
∣bi∣≤ |
1 |
是 |
14 |
3 |
10 |
2 |
500 |
100 |
3 |
16 |
100000 |
4 |
1000 |
109 |
5 |
40 |
300000 |