P8783 [蓝桥杯 2022 省 B] 统计子矩阵

题目:P8783 [蓝桥杯 2022 省 B] 统计子矩阵 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

代码:(部分解析在代码中)

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
long long a[1010][1010];
long long pre[1010][1010];
long long ptr(int x1,int y1,int x2,int y2)
{
	return pre[x2][y2]-pre[x2][y1-1]-pre[x1-1][y2]+pre[x1-1][y1-1];
}
int main()
{
	std::ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	int n,m;
	long long k;
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>a[i][j];
			pre[i][j]=pre[i-1][j]+pre[i][j-1]-pre[i-1][j-1]+a[i][j];
		} 
	}
	long long ans=0;
	//i记录左上角的横坐标 
	for(int i=1;i<=n;i++)
	{
		for(int j=i;j<=n;j++)//j记录右下角的横坐标 
		{
			for(int l=1,r=1;l<=m;l++)//l记录左上角的纵坐标,r记录右下角的纵坐标  
			{
				while(r<=m&&ptr(i,l,j,r)<=k)//若此时的子矩阵满足条件,右下角的元素继续往右边移动,即纵坐标++ 
				r++;
				r--;//上面记录的右下角的元素并不满足条件才退出,所以此时回退一格 
				ans+=r-l+1;   
			}
		}
	}
	cout<<ans;
	return 0;
 } 
相关推荐
scx2013100414 分钟前
20260105 莫队总结
c++
Q741_14743 分钟前
海致星图招聘 数据库内核研发实习生 一轮笔试 总结复盘(1) 作答语言:C/C++ 链表 二叉树
开发语言·c++·经验分享·面试·笔试
咔咔咔的1 小时前
1970. 你能穿过矩阵的最后一天
c++
_OP_CHEN1 小时前
【从零开始的Qt开发指南】(十九)Qt 文件操作:从 I/O 设备到文件信息,一站式掌握跨平台文件处理
开发语言·c++·qt·前端开发·文件操作·gui开发·qt文件
CSDN_RTKLIB1 小时前
【std::map】双向迭代器说明
c++·stl
王老师青少年编程1 小时前
信奥赛C++提高组csp-s之欧拉回路
c++·算法·csp·欧拉回路·信奥赛·csp-s·提高组
No0d1es1 小时前
2025年12月 GESP CCF编程能力等级认证C++六级真题
c++·青少年编程·gesp·ccf·6级
Terrence Shen1 小时前
【CUDA编程系列】之01
c++·人工智能·深度学习·机器学习
墨有6661 小时前
数学分析栈的出栈顺序:从算法判断到数学本质(卡特兰数初探)
c++·算法·数学建模
victory04311 小时前
pytorch 矩阵乘法和实际存储形状的差异
人工智能·pytorch·矩阵