最大化(矩陣字首和)

2021-07-31 20:40:22 字數 923 閱讀 8216

矩陣字首和+神奇的剪枝

矩陣字首和

如圖,a[2][2]的字首和就是2+3+2+7,a[1][4]的字首和就是2+3+4+8

以此類推,每乙個座標的字首和,都是該座標到矩陣左上角的數字之和;

這樣,任意子矩陣的數字和,可以在o(1)時間內查詢;

**實現

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

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

b[i][j]+=b[i][j-1];

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

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

b[i][j]+=b[i-1][j];//計算字首和

int js(int i,int j,int l,int r)//i,j為查詢矩陣左上角頂點,l,r為右下角頂點

//查詢任意矩陣數字和

讓原本不是十分優秀的演算法跑的還挺快。。。

輸出 4

#include

#include

using

namespace

std;

bool js(int i,int j,int l,int r)

bool check(int x)

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

pr[i*x]=1;

return0;}

int main()

printf("%d",ans);

}

最大子矩陣 字首和 貪心

給定乙個包含整數的二維矩陣,子矩形是位於整個陣列內的任何大小為1 1或更大的連續子陣列。矩形的總和是該矩形中所有元素的總和。在這個問題中,具有最大和的子矩形被稱為最大子矩形。例如,下列陣列 0 2 7 0 9 2 6 2 4 1 4 1 1 8 0 2 其最大子矩形為 9 2 4 1 1 8 它擁有...

1224 最大子矩陣(字首和)

門2是用的一維字首和,門1的一維字首和 好像有點錯誤。直接cv了 這個 裡,這樣輸入矩陣的方式還是第一次見,字首和是計算的每一列的。include include include include include define inf 999999999 define n 1001 using nam...

海嘯 矩陣字首和

有乙個沿海地區,可以看作有n行m列的城市,第i行第j列的城市海拔為h i j 由於沿海,所以這個地區經常會發生海嘯。海嘯發生時,部分城市會被淹沒,具體來說,海水高度會達到d,因此海拔低於d的城市都會被淹沒。現在有q次詢問,每次問你乙個矩形區域中,有多少城市不會被淹沒。第一行三個整數n,m,d,具體含...