luogu#P11558. [ROIR 2016] 和谐数列 (Day 2)

[ROIR 2016] 和谐数列 (Day 2)

题目背景

翻译自 ROIR 2016 D2T4

题目描述

如果一个整数数列 a1,a2,,ana_1, a_2, \dots, a_n 满足其中每个数(除了 a1a_1ana_n)等于其相邻两个数的和,即 $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][1, 2, 1, {-1}] 是和谐数列,因为 2=1+12 = 1 + 1,且 1=2+(1)1 = 2 + ({-1})

现在考虑两个相同长度的数列 A=[a1,a2,,an]A = [a_1, a_2, \dots, a_n]B=[b1,b2,,bn]B = [b_1, b_2, \dots, b_n]。我们定义它们之间的距离为:

$$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]B = [b_1, b_2, \dots, b_n],需要找出一个和谐数列 A=[a1,a2,,an]A = [a_1, a_2, \dots, a_n],使得 d(A,B)d(A, B) 最小。你只需要求出 d(A,B)d(A, B) 的最小值即可。

输入格式

第一行输入一个整数 nn,表示数列的长度(3n3000003 \leq n \leq 300000)。

第二行输入 nn 个整数 b1,b2,,bnb_1,b_2,\dots,b_n109bi109-10^9 \leq b_i \leq 10^9)。

输出格式

输出一个整数,表示 d(A,B)d(A, B) 的最小值。

4  
1 2 0 0
2

提示

样例解释

在样例中,可以令 A=[1,2,1,1]A=[1, 2, 1, {-1}],这样 d([1,2,1,1],[1,2,0,0])=2d([1, 2, 1, {-1}], [1, 2, 0, 0]) = 2。可以证明 d(A,B)d(A,B) 不可能小于 22

数据范围

子任务 是否捆绑 分值 3n3\le n\le bi\lvert b_i\rvert\le
11 1414 33 1010
22 500500 100100
33 1616 100000100000
44 10001000 10910^9
55 4040 300000300000