一維 二維字首和

2022-08-23 08:45:12 字數 1048 閱讀 7129

基礎知識:

一維字首和:

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]

1. 雷射炸彈

思路:1. 先求出每乙個以(i, j)為右下角節點,(0, 0) 為左上角節點的矩形的二維字首和

2. 列舉每乙個r * r的矩陣,求出最大值

**:

#include #include 

#include

using

namespace

std;

#define n (int)5e3 + 10

intn, m;

ints[n][n];

int main(void

)

for(int i = 1; i <= n; i++)

for(int j = 1; j <= m; j++)

s[i][j] += s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1

];

int res = 0

;

//列舉所有邊長是r的矩形, 列舉(i,j) 為右下角

for(int i = r; i <= n; i++)

for(int j = r; j <= m; j++)

res = max(res, s[i][j] - s[i - r][j] - s[i][j - r] + s[i - r][j -r]);

printf(

"%d\n

", res);

return0;

}

字首和(一維 二維)

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個整數...

一維字首和與二維字首和

什麼是字首和?字首和是乙個陣列的某項下標之前 包括此項元素 的所有陣列元素的和。作用 快速求出某一段區間的總和 such as 求出a 3 a 4 a 15 sum 15 sum 2 sum為字首和 優勢 可以在o 1 的複雜度求出某一部分的總和 設b為字首和陣列,a為原陣列,根據這句話可以得到字首...

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

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