给定一个长度为n的序列x。求修改第i个元素为多少时,序列的波动度会最小?
序列的波动度定义为:序列所有相邻元素差值的绝对值的和。
可以很容易发现,当修改第1个和第n个元素时,显然修改其为x2和xn−1最好。而对于其他元素,由于波动度的定义,可以令xi为xi−1与xi+1之间任意一值,这样,xi与xi−1、xi+1的波动值可以用如下公式计算xi+1−xi+xi−xi−1=xi+1−xi−1(如果xi−1>xi+1,交换它们的值即可)。
如果令xi<xi−1或xi>xi+1,那么它们的波动值为xi+1−xi或xi−xi−1,由于大小关系,一定比上面的值大。
给定一个由 n 个整数组成的序列 x1,x2,…,xn。定义序列的波动度 V 为相邻元素差值的绝对值之和,即 V=∑i=1n−1∣xi+1−xi∣。你可以重新设定序列中任意一个元素的值(设为任意整数),从而改变整体波动度。对于每个位置 k(k=1 到 n),请计算如果只调整 xk 的值,能达到的最小波动度。
约束条件:序列长度 n 不超过 10^5,每个元素 xi 的绝对值不超过 10^9。
第一行包含一个整数 n,表示序列的长度。
第二行包含 n 个整数,表示序列的初始值,用空格分隔。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.