差分

差分算法

记录第一道差分算法的题目,以防自己忘记
差分
差分算法,即是指,用一个数组b[i] = a[i]-a[i-1], 来保存差值,属于前缀和的逆运算

我们看下这个题,能够对[l,r]之间的数据进行 同时+1,或者-1操作,那么反映到b数组上
即b[l] 和b[r+1]进行相反的操作,
那么说下我们最后的目的,即把 b[2]…b[n]均变成0,那么就可以满足要求
我们分为4种情况
1 2<=i,j<=n ,这样相当于我们进行的是中间元素的操作
2 i1,2<=j<=n 这样相当于我们进行的 前缀的 操作,
3 2<=i<=n,j
n+1 这样相当于我们进行的 后缀的操作
4 i1,jn+1 没有意义

所以我们 的最小操作次数 就是,,记录下2~n当中的正数和,以及负数和,那么最小的次数
就是 min(p,q)+abs(p-q);

一共有 abs(p-q)+1种情况,因为 最后的取值,只和b[1]有关系,所以我们只需要知道 b[1]有多少种情况,因为 在进行中间区间操作时,不会影响,所以之后后面才会影响,所以 就有abs(p-q)+1种。