二维前缀和的优化
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){ for(int l=1;l<=i;l++){ for(int r=1;r<=j;r++){ sum[i][j]+=a[l][r]; } } } 表示1,1 到i,j的二维前缀和 调用一个区间内的前缀和时 int x1,y1,x2,y2; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ for(int ii=1;ii<=n;ii++){ for(int jj=1;jj<=m;jj++){ if(i<=ii and j<=jj){ kk=sum[ii][jj]-sum[ii][j-1]-sum[i-1][jj]+sum[i-1][j-1]; if(kk%k==0){ ans++; //cout<<i<<" "<<j<<" "<<ii<<" "<<jj<<" "<<kk<<endl; } } } } } }