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

蓝桥杯2022年第十三届省赛真题-统计子矩阵

题目链接:

代码思路:

①枚举上、下边界。

②求每一列前缀和。

②固定上下边界后,在通过双指针确定子矩阵的左右边界。双指针维护一个窗口 [l, r],确保窗口中所有列的和(下面前缀和-上面前缀和)不超过 K。通过滑动窗口方式,计算出以r为右端点的所有子矩阵的有效数量,也就是 子矩阵数量=r - l + 1;

代码如下:

#include<bits/stdc++.h>
#define int long long 
using namespace std;
const int N = 550;

int n, m, k;
int g[N][N];
//前缀和 竖
int s[N][N];
//答案
int ans;

signed main(){
    //读入
    cin >> n >> m >> k;
    for(int i = 1;  i<= n; i++){
        for(int j = 1; j <= m; j++){
            cin >> g[i][j];
            //计算前缀和
            s[i][j] = s[i-1][j] + g[i][j];
        }
    }
    
    //枚举 上 下 边界
    for(int i = 1; i <= n; i++){
        for(int j = i; j <= n; j++){
            //定义双指针
            int l = 1, sum = 0;
            for(int  r = 1; r <= m; r++){
                //加上 r 这一列
                sum += s[j][r] - s[i-1][r];
                //当sum>k
                while(sum > k){
                    //减去l那一列
                    sum -= s[j][l] - s[i-1][l];
                    l++;
                }
                //加上这个区间所有符合的矩阵数
                ans += r-l+1;
            }
        }
    }
    cout << ans << endl;
    return 0;
}

相关文章:

  • ruby基础语法
  • shell脚本 - Linux定时温度监控-软硬件检测 - 服务器温度监控 - 写入日志
  • [Linux]从零开始的ARM Linux交叉编译与.so文件链接教程
  • nginx路径匹配的优先级
  • 条件概率、概率乘法公式、全概率公式和贝叶斯 (Bayes) 公式
  • phpstrom 配置调试 php 项目全流程,弄清一些概念
  • vue项目本地调试使用https
  • 软考案例分析实例答题模板
  • CS内网渗透 - 如何通过冰蝎 Webshell 上线 Weblogic 服务器到 Cobalt Strike 并绕过杀软检测(360、火绒)?
  • 8.2 对话框2
  • 【硬核实战】从零打造智能五子棋AI:JavaScript实现与算法深度解析
  • SpringBoot 基于个性化定制的智慧校园管理系统设计与开发
  • 大模型学习六:‌小米8闲置,通过Termux安装ubuntu做个随身服务器,纯粹碍眼折腾
  • 【MCP-1】MCP是什么,从DEMO入手
  • 从零构建大语言模型全栈开发指南:第五部分:行业应用与前沿探索-5.2.2超级对齐与AGI路径探讨
  • 博途 TIA Portal之1200做从站与调试助手的TCP通讯
  • 深入解析机器学习
  • Python(八)—— 开发
  • 显示器各类异常处理方法
  • [ctfshow web入门] web30
  • 欠债七十万后,一个乡镇驿站站长的中年心事
  • 订婚不等于性同意!山西订婚强奸案入选最高法案例
  • 沈阳卫健委通报“健康证”办理乱象:涉事医院已被立案查处
  • 线下哪些商家支持无理由退货?查询方法公布
  • 海北州委常委、常务副州长桑本履新青海省供销社理事会主任
  • 张笑宇:物质极大丰富之后,我们该怎么办?