一維字首和與二維字首和

2021-10-08 23:08:07 字數 649 閱讀 2304

什麼是字首和?

字首和是乙個陣列的某項下標之前(包括此項元素)的所有陣列元素的和。

作用:快速求出某一段區間的總和

such as:求出a[3]+a[4]+…+a[15]=sum[15]-sum[2] //sum為字首和

優勢:可以在o(1)的複雜度求出某一部分的總和

設b為字首和陣列,a為原陣列,根據這句話可以得到字首和的定義式和遞推式:【一維字首和】

根據上面的定義,我們可以很容易得到 sum[i] = sum[i-1] + a[i]   這樣就可以得到前i個數的和

根據上述表示式我們可以以o(1)求出區間[i,j]的區間和

【二維字首和】

推導公式:

是不是有點抽象,(大霧

通俗地說,從這裡可以得到下圖中的公式

字首和演算法 一維字首和 二維字首和

輸入乙個長度為n的整數序列。接下來再輸入m個詢問,每個詢問輸入一對l,r。對於每個詢問,輸出原序列中從第l個數到第r個數的和。輸入格式 第一行包含兩個整數n和m。第二行包含n個整數,表示整數數列。接下來m行,每行包含兩個整數l和r,表示乙個詢問的區間範圍。輸出格式 共m行,每行輸出乙個詢問的結果。資...

字首和(一維 二維)

1.一維字首和 字首和 s i a 1 a 2 a i 區間和 l,r a l a r s r s l 1 題目795 輸入乙個長度為n的整數序列。接下來再輸入m個詢問,每個詢問輸入一對l,r。對於每個詢問,輸出原序列中從第l個數到第r個數的和。輸入格式 第一行包含兩個整數n和m。第二行包含n個整數...

一維 二維字首和

基礎知識 一維字首和 s i a 1 a 2 a i a l a r s r s l 1 二維字首和 s i,j 第 i 行 j 列格仔左上部分所有元素的和 以 x1,y1 為左上角,x2,y2 為右下角的子矩陣的和為 s x2,y2 s x1 1,y2 s x2,y1 1 s x1 1,y1 1 ...