矩陣字首和+神奇的剪枝
矩陣字首和
如圖,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,具體含...