AcWing 796 子矩陣的和

2021-10-03 13:39:52 字數 868 閱讀 4594

題目描述

輸入乙個n行m列的整數矩陣,再輸入q個詢問,每個詢問包含四個整數x1, y1, x2, y2,表示乙個子矩陣的左上角座標和右下角座標。

對於每個詢問輸出子矩陣中所有數的和。

輸入格式

第一行包含三個整數n,m,q。

接下來n行,每行包含m個整數,表示整數矩陣。

接下來q行,每行包含四個整數x1, y1, x2, y2,表示一組詢問。

輸出格式

共q行,每行輸出乙個詢問的結果。

資料範圍

1≤n,m≤1000,

1≤q≤200000,

1≤x1≤x2≤n,

1≤y1≤y2≤m,

−1000≤矩陣內元素的值≤1000

輸入樣例

3 4 3

1 7 2 4

3 6 2 8

2 1 2 3

1 1 2 2

2 1 3 4

1 3 3 4

輸出樣例
17

2721

題目思路

用字首和的思想,s陣列儲存a陣列的對應角標值的和;

儲存公式:s[i][j] = s[i-1][j] + s[i][j-1] - s[i-1][j-1] + a[i][j]

計算公式:s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1]

#includeusing namespace std;

const int n = 1e3+10;

int a[n][n],s[n][n];

int main()

return 0;

}

AcWing 796 子矩陣的和

題目描述 輸入乙個n行m列的整數矩陣,再輸入q個詢問,每個詢問包含四個整數x1,y1,x2,y2,表示乙個子矩陣的左上角座標和右下角座標。對於每個詢問輸出子矩陣中所有數的和。輸入格式 第一行包含三個整數n,m,q。接下來n行,每行包含m個整數,表示整數矩陣。接下來q行,每行包含四個整數x1,y1,x...

acwing796 子矩陣的和

照搬題解的圖。維護s i j 陣列用於儲存矩陣點和其左上角的值,則求某一點的字首和為 黃色框減去兩個紫框加上補回重疊部分的框。即s x2,y2 s x1 1,y2 s x2,y1 1 s x1 1,y1 1 此外,s i j 可以用遞推方式求出,即 紫框加紫框補回重疊的橙框加上x2,y2的值 inc...

acwing 796 子矩陣的和

輸入乙個 n 行 m 列的整數矩陣,再輸入 q 個詢問,每個詢問包含四個整數 x1,y1,x2,y2,表示乙個子矩陣的左上角座標和右下角座標。對於每個詢問輸出子矩陣中所有數的和。輸入格式 第一行包含三個整數 n,m,q。接下來 n 行,每行包含 mm 個整數,表示整數矩陣。接下來 q 行,每行包含四...