AcWing演算法基礎1 5

2022-03-04 03:52:02 字數 885 閱讀 5836

字首和與差分

兩個內容都比較少,就放一起寫了

設陣列 a 的前 n 項為a1 , a2 , a3 ... an

字首和陣列就是每一項是a陣列的前i項和,比如字首和陣列res,res[ 1 ] = a[ 1 ],res[ 2 ] = a[ 1 ] + a [ 2 ],res[ n ] = a[ 1 ] + a [ 2 ] + ... + a[ n ]

字首和可以在o(1)的時間內計算一段區間內的累加和,比如區間 l ~ r 之間的元素累加和為res[ r ] - res [ l - 1]

一維字首和:

res[ i ] = a[ 1 ] + a[ 2 ] + ... a[ i ]

二維字首和:

res[ i, j ] = 第i行j列格仔左上部分所有元素的和

以(x1, y1)為左上角,(x2, y2)為右下角的子矩陣的和為 res[x2, y2] - res[x1 - 1, y2] - res[x2, y1 - 1] + res[x1 - 1, y1 - 1]

給定陣列res,用字首和陣列 res 求出來的 a 陣列就是差分陣列,差分和字首和互為逆運算

一維差分:

b[i] = a[i] - a[i - 1]

給區間[l, r]中的每個數加上c:b[l] += c, b[r + 1] -= c

二維差分:

給以(x1, y1)為左上角,(x2, y2)為右下角的子矩陣中的所有元素加上c:

s[x1, y1] += c, s[x2 + 1, y1] -= c, s[x1, y2 + 1] -= c, s[x2 + 1, y2 + 1] += c

AcWing演算法基礎1 4

高精度 高精度加法,高精度減法,高精度乘低精度,高精度除以低精度,大概平時用的最多的就是這四個,模板有兩種 因為我現在不太會用vector,就用陣列也寫了個,23333 高精度運算和人工手算差不多,就是模擬人工手算的過程,乘法有點不一樣,在下面有提到,大致也是模擬運算 廢話不多說,上模板 高精度加法...

AcWing演算法基礎1 3

二分 二分分為整數二分和實數二分,其中整數二分模板有兩個 模板 整數二分模板 第一種模板將區間分為 l mid 和 mid 1,r 1 int bsearch 1 int l,intr 2 9return l 10 第二種模板把區間分為 l mid 1 和 mid r 需要注意的是,這裡算mid時要...

AcWing演算法基礎1 1

排序 快速排序 快排 寫題的時候用的不多基本都是直接sort 面試可能要手擼快排,上模板 1 void quick sort int q,int l,intr 2 12 quick sort q,l,j quick sort q,j 1 r 13 模板題 給定你乙個長度為n的整數數列。請你使用快速排...