前言
由于前缀和和差分一个加一个减,两个在写法上差距不大而且具有一定共同点,所以放在一块进行描述。
前缀和
前缀和介绍
前缀和顾名思义,就是一段数列前面某一段连续数列的和。
他经常用于预处理区间和的信息,通过预处理前缀和,我们可以快速的得到某段连续数列的和是多少。
当我们需要求取
前缀和模板
1 | vector<int>a(n+1),sum(n+1);//a为原数组,sum为前缀和数组 |
差分
差分介绍
差分是相邻两个元素之间的差值,一般为后面的一个元素减前面的一个元素。
差分经常用于将区间加操作转化为单点加的操作,对于一段区间
同时,差分数组的前缀和也是该位置原先的数字本身,这个点有时候会用到。
差分模板
1 | vector<int>a(n+1),dif(n+1);//a为原数组,dif为差分数组 |
总结
前缀和与差分往往都是对于区间查询、区间操作转化为单点查询、单点操作来降低时间复杂度。