首页 > 其他分享 >统计子矩阵+二维前缀和+滑动窗口

统计子矩阵+二维前缀和+滑动窗口

时间:2024-05-31 21:23:44浏览次数:15  
标签:count 前缀 int 矩阵 二维 num

题目链接:0统计子矩阵 - 蓝桥云课 (lanqiao.cn)
代码

#include<iostream>
using namespace std;

const int N = 505;

int num[N][N]; 

int main() {
	int n, m, k;
	cin >> n >> m >> k;
	int count = 0;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cin >> num[i][j];
			num[i][j] += num[i - 1][j] + num[i][j - 1] - num[i - 1][j - 1];
		}
	}
//打印二维前缀和效果 
//	for (int i = 1; i <= n; i++) {
//		for (int j = 1; j <= m; j++) {
//			cout << num[i][j] << " ";
//		}
//		cout << endl;
//	}
//for循环超时 
//	for (int x1 = 1; x1 <= n; x1++) {
//		for (int y1 = 1; y1 <= m; y1++) {
//			for (int x2 = x1; x2 <= n; x2++) {
//				for (int y2 = y1; y2 <= m; y2++) {
//					if (num[x2][y2] - num[x2][y1 - 1] - num[x1 - 1][y2] + num[x1 - 1][y1 - 1] <= k) {
//						count++;
////						cout << k << " " << z << " " << i << " " << j << "##" << endl;
//					}
////					cout << k << " " << z << " " << i << " " << j << endl;
//				}
//			}
//		}
////	}
//	cout << count;
	for (int l = 1; l <= m; l++) {
		for (int r = l; r <= m; r++) {
			for (int u = 1, d = 1; d <= n; d++) {
				while (u <= d && num[d][r] - num[d][l - 1] - num[u - 1][r] + num[u - 1][l - 1] > k) {
					u++;
				}
				count += d - u + 1;	
			}	
		}
	} 
	cout << count;
	return 0; 
}

标签:count,前缀,int,矩阵,二维,num
From: https://www.cnblogs.com/zuoxiaochen/p/18225290

相关文章

  • fps游戏如何快速定位矩阵
    fps游戏如何快速定位矩阵矩阵特点:1、第一行第一列值的范围在**-1----1**之间,如果开镜之后值会变大。2、第一行第三列的值始终为0。3、第一行第四列的值比较大,>300或者**<-300**。根据这三个特点,定位矩阵已经足够了。找到的矩阵可以有多个,根据透视的效果,使用最佳......
  • 旋转矩阵00
    题目链接旋转矩阵题目描述注意点将图像旋转90度不占用额外内存空间解答思路需要找到将图像旋转90度的规律,为了不占用额外内存空间,可以先将图像上下翻转,然后再将图像沿着主对角线进行翻转,得到的就是旋转90度之后的图像代码classSolution{publicvoidro......
  • Qt-qrencode开发-生成、显示二维码
    Qt-qrencode开发-生成二维码......
  • 前缀和数组
    //前缀和数组preSum[]:preSum[i]记录nums[0,i-1]区间的累加和classex_preSum{private:vector<int>preSum;public:ex_preSum(vector<int>nums){preSum.resize(nums.size()+1);//原数组下标[0,n-1]。preS......
  • 期中考试后总结-矩阵快速幂
    前言:总结了一下期中考试后OI和学习上的一些收获,以及需要接下来加强的地方———————————————————————————————————————————————————————————————————————————————————————————————......
  • 矩阵 学习笔记
    引入矩阵的引入来自线性方程组,将其左边每一项的系数和右边的常数抽象出来就是矩阵。\[\left\{ \begin{array}{} x_1+2x_2=4\\ 2x_1+3x_2=5 \end{array}\right.\Leftrightarrow\left[ \begin{array}{} 1&2\\ 2&3 \end{array}\right]\left[ \b......
  • 基于二维CS-SCHT变换和扩频方法的彩色图像水印嵌入和提取算法matlab仿真
    1.算法运行效果图预览   2.算法运行软件版本matlab2022a 3.算法理论概述水印嵌入原理   水印提取原理: 将嵌入水印的图像再次进行二维CS-SCHT变换。 提取变换后的低频系数,并按照嵌入时的规则去除宿主图像内容的影响,恢复出水印信息Wm′​。  ......
  • 在做题中学习(62):矩阵区域和
    1314.矩阵区域和-力扣(LeetCode)解法:二维前缀和思路:读题画图才能理解意思:dun点点的是mat中的一个数,而要求的answer同位置的数=以点为中心上下左右延长k个单位所围成长方形的和。因为最后answer中的每一个数都是mat一部分区域的和,所以就想到了二维前缀和模板:在做题中......
  • 矩阵树定理学习笔记
    矩阵树定理学习笔记真的,我这辈子都没有想过行列式还能用到这种地方。定义图的关联矩阵对于一张有\(n\)个点、\(m\)条边的图(对于无向图,可以随便定义边的方向,因为相反的边只需要将对应列乘以\(-1\)即可),我们定义其关联矩阵\(M\)满足:\[M_{i,j}=\left\{\begin{matrix}1&e_j......
  • 高维前缀和
    给定\(n,q\)和\(f(0),f(1),\dots,f(2^n-1)\)。\(q\)次询问,给定\(S\),求:\[\sum_{S'\subseteqS}f(S')\]\(n\le20\),\(q\le10^6\)。令\(S_i\)表示\(S\)的第\(i\)个二进制位。可以发现若\(S'\subseteqS\),那么对于所有\(i\)都有......