当前位置: 首页 > news >正文

蓝桥杯-统计子矩阵

统计子矩阵

题目链接
在这里插入图片描述
思路:

  1. 使用前缀和+滑动窗口 ,可以先计算出纵向或横向的前缀和,matrix[i][j]表示前i行第j列之和

  2. 然后遍历上边界top和下边界buttom,再这个上下边界内使用滑动窗口,由于前面维护了纵向前缀和,所以转化成类似一维的滑动窗口。

  3. 滑动窗口[l,r]:遍历右端点,根据区间和调整左端点,如果区间和大了,左端点右移。注意区间和也要移除左端点,直到找到满足的区间,区间大小r-l+1就是以r为右端点的满足条件子矩阵个数,累加即可

#include <iostream>
using namespace std;
const int MAXN=502;
int matrix[MAXN][MAXN];
int n,m,k,ans=0;int main()
{scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%d",&matrix[i][j]);matrix[i][j]+=matrix[i-1][j]; //前缀和:第i行j列为第1行到第i行j列的和}}//枚举上下边界for(int top=1;top<=n;top++){for(int buttom=top;buttom<=n;buttom++){int l=1,r=1; //滑动窗口的左右端点int sum=0; //滑动窗口的和for(r=1;r<=m;r++){ //枚举右端点sum+=matrix[buttom][r]-matrix[top-1][r]; //更新区间和:加上右端那一列的值while(sum>k){sum-=matrix[buttom][l]-matrix[top-1][l]; //当前矩阵的sum大于k,缩减左端l++;}ans+=r-l+1; //方法数就是区间大小}}}cout<<ans<<endl;return 0;
}
http://www.lryc.cn/news/120192.html

相关文章:

  • 在线预览Word、Excel、PowerPoint等文件
  • 准确预测极端降水,哥伦比亚大学推出升级版神经网络 Org-NN
  • 【数据结构】反转链表、链表的中间节点、链表的回文结构(单链表OJ题)
  • Python爬虫-抓取的目标数据为#x开头,怎么解决?
  • 短视频账号矩阵系统/技术开发搭建私有部署
  • 光致发光二极管光源——荧光效率检测系统
  • 【手撕C语言】多线程
  • Dubbo2-概述
  • 【将回声引入信号中】在语音或音频文件中引入混响或简单回声,以研究回声延迟和回波幅度对生成的回波信号感知的影响(Matlab代码实现)
  • pythonocc进阶学习:投影projection
  • Scractch3.0_Arduino_ESP32_学习随记_显示网络天气(二)
  • Mysql压力测试(sysbench)
  • TBDS MPP参数列表
  • C# OpenCvSharp 读取rtsp流
  • 每日后端面试5题 第七天
  • 计算机视觉的应用10-图片中的表格结构识别与提取实战
  • P4178 Tree (点分治)
  • Kubernetes 二进制搭建
  • QT QtXlsx安装使用
  • Java医院信息化HIS管理系统源码
  • 【Uni-App】uview 开发多端应用,密码显示隐藏功能不生效问题
  • 人工智能算法-SVM, KNN
  • 计算机网络—TCP
  • Oracle到DM实时数据同步实施方案
  • WebRTC | 音视频实时通信的本质
  • ApiPost的使用
  • 6、CCS 配置工程头文件批量添加路径的方法
  • Visual Studio配置PCL库
  • 数据分析 | 为什么Bagging算法的效果优于单个评估器
  • mysql架构介绍