第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组 统计子矩阵

cpp 复制代码
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>
#include<queue>

using namespace std;

int cnt,temp;
int n,m,K;
int a[505][505];
int pre[505][505];//二维前缀和



void sol()
{
	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]=a[i][j]+pre[i-1][j]+pre[i][j-1]-pre[i-1][j-1];
		}
	}
	int limit;//等到第四层循环时,在k行l列时超过K,记录下其l值。当i,j不变,k为k+1行时,再次达到l时一定会再次超过K,所以进行剪枝
	for(int i=1;i<=n;++i)
	{
		for(int j=1;j<=m;++j)
		{
			limit=m;
			for(int k=i;k<=n;++k)
			{
				for(int l=j;l<=m&&l<=limit;++l)
				{
					temp=pre[k][l]-pre[i-1][l]-pre[k][j-1]+pre[i-1][j-1];
					if(temp<=K)++cnt;
					else {
						limit=l;
						break;
					}
				}
			}
		}
	}
	
    cout<<cnt<<endl;
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	sol();
}
相关推荐
列星随旋4 小时前
线段树和树状数组的学习
学习·算法
楼田莉子4 小时前
C++17新特性:__had_include/属性/求值顺序规则
开发语言·c++·后端
全糖可乐气泡水6 小时前
Codex适配国产信创环境安装部署与技术适配全解析
开发语言·git·python·算法·百度
h_a_o777oah6 小时前
状态机+划分型 DP :深度解析K-划分问题下 DP 状态的转移逻辑(洛谷P2679 P2331 附C++代码)
c++·算法·动态规划·acm·状态机dp·划分型dp·滚动数组优化
05候补工程师6 小时前
从算法理想向工程现实的跨越:SLAM 核心架构、思维误区与 Nav2 实战避坑指南
人工智能·算法·安全·架构·机器人
手写码匠7 小时前
Android 17 适配实战指南:新特性解读、隐私变更与迁移全攻略
人工智能·深度学习·算法·aigc
雪度娃娃7 小时前
Asio异步读写——连接的安全回收问题
开发语言·c++·安全·php
珊瑚里的鱼7 小时前
leetcode42雨水
算法·leetcode
不吃土豆的马铃薯7 小时前
Spdlog 进阶:日志基本控制、日志格式控制、异步记录器
linux·服务器·开发语言·前端·c++
水木流年追梦8 小时前
大模型入门-大模型的推理策略
开发语言·python·算法·正则表达式·prompt