Farmer John 的 N 头奶牛对他们牛棚的室温非常挑剔。
有些奶牛喜欢温度低一些,而有些奶牛则喜欢温度高一些。
Farmer John 的牛棚包含一排 N个牛栏,编号为 1…N,每个牛栏里有一头牛。
第 i头奶牛希望她的牛栏中的温度是 pi,而现在她的牛栏中的温度是 ti。
为了确保每头奶牛都感到舒适,Farmer John 安装了一个新的空调系统。
该系统进行控制的方式非常有趣,他可以向系统发送命令,告诉它将一组连续的牛栏内的温度升高或降低 11 个单位——例如「将牛栏 5…85…8 的温度升高 11 个单位」。
一组连续的牛栏最短可以仅包含一个牛栏。
请帮助 Farmer John 求出他需要向新的空调系统发送的命令的最小数量,使得每头奶牛的牛栏都处于其中的奶牛的理想温度。
输入格式
输入的第一行包含 N。
下一行包含 N个非负整数 p1…pN,用空格分隔。
最后一行包含 N个非负整数 t1…tN。
输出格式
输出一个整数,为 Farmer John 需要使用的最小指令数量。
数据范围
1≤N≤10^5
0≤pi,ti≤100000
输入样例:
5
1 5 3 3 4
1 2 2 2 1
输出样例:一组最优的 Farmer John 可以使用的指令如下:
初始温度 :1 2 2 2 1
升高牛棚 2..5:1 3 3 3 2
升高牛棚 2..5:1 4 4 4 3
升高牛棚 2..5:1 5 5 5 4
降低牛棚 3..4:1 5 4 4 4
降低牛棚 3..4:1 5 3 3 4
题目解析:
在计算这个题目的次数时,我们可以用暴力法去求解,但是这意味着次数达到最高,因此我们采用差分法去求解这类问题。但是,为什么可以去用这种方法。
1.根据初始温度和目标温度,可以得到相差温度数组a,对于a数组,每个元素的含义为当前元素需要加多少次,才能到达目标温度(即操作次数)
2.我们需要消耗掉所有的操作,才能到达目标温度,即把a数组中的元素转化为0,而每次对于a数组上[l,r]区间内的元素+1,相当于在a数组的差分数组d上d[l]+=1, d[r+1]−=1,即一个数字+1,一个数字−1,特殊的,还可以对于一个数字+1或者−1(只修改一个数字),由此,问题转化为:在差分数组d上,每次进行+1、−1操作,能使得全部元素变为0的次数,那么就是差分数组中,正数和、负数绝对值和的最大值
3.输出max(|pos|,|neg|)