01.前缀和
概念:前缀和是指在一个数列中,以某个数字作为前缀的数字和
一维数组一维前缀和数组模板 sum[0]=arr[0]; i=0 sum[i]=sum[i-1]+arr[i]; i>0
int arr[5] = {2,3,5,7,11}; int sum[5]; for(int i = 0;i < 5;i++) { if(i == 0) sum[i] = arr[i]; else sum[i] = sum[i-1] + arr[i]; } //输入sum数组验证 for(int i = 0;i < 5;i++) cout << sum[i] << " "; //输入2 5 10 17 28
作用:求区间[l,r]内的数组和
区间[l,r]的和 = arr[l]+arr[l+1]+...arr[r-1]+arr[r];sum[r]-sum[l-1] = sum[0]+sum[1]+...sum[l-2]+sum[l-1]+sum[l]+...sum[r] - sum[0]+sum[1]+...sum[l-2]+sum[l-1] =sum[l]+...sum[r]由此可得,当求一个数组在区间[l,r]内的和,咱们能够用它的前缀和和数组疾速得出答案