AcWing 4405. 统计子矩阵

来源:第十三届蓝桥杯省赛C++B组

给定一个 N×MN×M 的矩阵 AA,请你统计有多少个子矩阵 (最小 1×11×1,最大 N×MN×M) 满足子矩阵中所有数的和不超过给定的整数 KK?

输入格式

第一行包含三个整数 N,MN,M 和 KK。

之后 NN 行每行包含 MM 个整数,代表矩阵 AA。

输出格式

一个整数代表答案。

数据范围

对于 30%30% 的数据,N,M≤20N,M≤20,
对于 70%70% 的数据,N,M≤100N,M≤100,
对于 100%100% 的数据,1≤N,M≤500;0≤Aij≤1000;1≤K≤2500000001≤N,M≤500;0≤Aij≤1000;1≤K≤250000000。

输入样例:

3 4 10
1 2 3 4
5 6 7 8
9 10 11 12

输出样例:

19

样例解释

满足条件的子矩阵一共有 1919,包含:

  • 大小为 1×11×1 的有 1010 个。
  • 大小为 1×21×2 的有 33 个。
  • 大小为 1×31×3 的有 22 个。
  • 大小为 1×41×4 的有 11 个。
  • 大小为 2×12×1 的有 33 个。

子矩阵的和加强版

AcWing 796. 子矩阵的和 (前缀和)_呵呵world的博客-CSDN博客

AC

#include<stdio.h>
#include<iostream>
#define N 503
using namespace std;
int a[N][N];
//s[N][N];
/*long long calc(int x1,int y1,int x2,int y2)//计算以x1,y1为左上角 x2,y2为右下角
{return a[x2][y2]-a[x1-1][y2]-a[x2][y1-1]+a[x1-1][y1-1];
}*/
int main(void)
{ios::sync_with_stdio(false);int n,m;long long k;long long ans=0;cin>>n>>m>>k;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];//初始化前缀和数组 即计算左上角为1,1 右下角为i,j的矩阵a[i][j]+=a[i-1][j]+a[i][j-1]-a[i-1][j-1];}}for(int l=1;l<=m;l++)//枚举矩阵的左边{for(int r=l;r<=m;r++)//枚举矩阵的右边 {for(int i=1,j=1;i<=n;i++)//根据已有的边界,开始从上到下双指针扫描 {//j是上边界 i下边界,如果这一部分>k 就从下一行开始遍历//calc(j,l,i,r)==> x1,y1,x2,y2 while(j<=i &&  a[i][r]-a[j-1][r]-a[i][l-1]+a[j-1][l-1]>k)  j++;//当i=1,j=1的时候,该位置的值如果大于k的话,这个时候j+1,就大于i了 if(j<=i)  ans+=(i-j+1);//j<=i 所有就证明第j行一定满足条件 i-j+1就代表的是上下界之间一共多少行 }}} cout<<ans<<'\n'; return 0;} 

【第十三届蓝桥杯省赛B组】统计子矩阵 (枚举前缀和+双指针)相关推荐

  1. 【蓝桥杯Python组】2022年第十三届蓝桥杯省赛B组Python解题思路详解

    第十三届蓝桥杯省赛B组Python解题思路详解 因为今年采用线上的举办方式进行比赛,所以组委会对题目做了一定的调整,将原来的5道填空+5道编程题变成了2道填空+8道编程题,据说是为了防止抄袭.其实题目 ...

  2. 蓝桥杯 第十三届蓝桥杯省赛C++组真题 修剪灌木 Python

    题目 爱丽丝要完成一项修剪灌木的工作. 有 NN 棵灌木整齐的从左到右排成一排. 爱丽丝在每天傍晚会修剪一棵灌木,让灌木的高度变为 00 厘米. 爱丽丝修剪灌木的顺序是从最左侧的灌木开始,每天向右修剪 ...

  3. 2022第十三届蓝桥杯省赛B组Python

    本来蓝桥杯是 5 道填空题,5 道编程题,但是这一届突然变成了 2 道填空题和 8 道编程题 文章目录 试题 A: 排列字母 试题 B: 寻找整数 试题 C: 纸张尺寸 试题 D: 数位排序 试题 E ...

  4. 2022年第十三届蓝桥杯省赛B组python 试题F:消除游戏

    文章目录 题目 完整代码及注释 题目 完整代码及注释 s = list('sdfhhhhcvhhxcxnnnnshh') # 读入数据 pre = s f = False for i in range ...

  5. 第十三届蓝桥杯省赛B组 第10题(LCDS?找规律.)

    题目 题意: 给定n个数,要求用魔法把n个数全都变成1.魔法:将一段连续区间的数ai变成sqrt(a[i]/2+1) 思路: 一个数最多施展魔法6次即可,可以预处理出每个数变到1的路径.实质是找到两个 ...

  6. 第十三届蓝桥杯省赛JavaC组真题——详细答案对照(完整版)

    前言 本次题目我认为还是比较难的,有人做了一个分析,我们来看看啊. 话说真的对于大专生来说已经是非常难的了呢,能拿到省一的基本上都是万里挑一的孩子呢. 目录 前言 试题 A: 排列字母 试题 B: 特 ...

  7. 第十三届蓝桥杯省赛C++B组题解

    写在前面 · 本篇题解对应的是第十三届蓝桥杯省赛C++组的B组的第一场 · 所使用的语言时Python3(其实主要看思路.是什么语言不重要

  8. 第十三届蓝桥杯模拟赛第二期JAVA组个人题解

    第十三届蓝桥杯模拟赛第二期JAVA组个人题解 文章目录 第十三届蓝桥杯模拟赛第二期JAVA组个人题解 题目1 题目2 题目3 题目4 题目5 题目6 题目7 题目8 题目9 题目10 题目1 小蓝的I ...

  9. 2022年第十三届蓝桥杯省赛C/C++B组个人题解

    2022年第十三届蓝桥杯省赛C/C++B组个人题解 试题 A: 九进制转十进制(数学) 试题 B: 顺子日期(语文) 试题 C: 刷题统计(模拟) [样例输入] [样例输出] 试题 D: 修剪灌木(找 ...

最新文章

  1. 【AR】开始使用Vuforia开发iOS(2)
  2. 文档上传下载 php开源,PHP文件的上传下载 - PHP开发学习门户的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. 算法与数据结构(快速排序)
  4. aida64 extreme 序列号_轻声问海关,规范申报错了谁负责?底料来源四川行不行?没有公式定价行不行?序列号是料号行不行?...
  5. Windows环境下MySQL 8.0 的安装、配置与卸载
  6. 装mysql最后一步没响应_解决MySQL安装到最后一步未响应的三种方法
  7. 百度机器阅读理解比赛赛后总结
  8. Mysql Explain用法pdf
  9. OpenResty之ngx.ssl
  10. [转载] python字符串转化为16进制数_python实用知识,数值类型和进制整数的转换
  11. razor读取mysql_MVC 数据库增删改查(Razor)方法(1)和数据库
  12. VS Code 取色器 插件 颜色选取
  13. 使用阿里云镜像加速器为docker pull提速
  14. 在Octane中提升渲染速度的技巧(第1部分)
  15. 网页怎么看不到css,怎么查看网页的CSS代码?如何阅读?
  16. Android-Hybrid-问题收集Android客户端无法拦截Vue路由的问题
  17. 基本运维及协同开发 :Linux基本使用
  18. 大咖丨昆仑数据陈晨:工业大数据真正要做的是智能分析和智能决策
  19. 最近入手kinect,准备搞搞体感开发
  20. 深度解读:《数字孪生世界白皮书(2023)》全方位剖析

热门文章

  1. Vue——@功能PC端实现总结
  2. 树上倍增法求最近公共祖先LCA
  3. 7篇顶会论文带你梳理多任务学习建模方法
  4. 性格测试小软件有哪些,十个有趣的性格小测试 测试你是什么性格
  5. 计算机导论期末考试知识点,计算机导论期末复习(知识点).doc
  6. 室友打了一晚上游戏我学会了使用GDB调试
  7. 分段管理机制(段描述符,描述符表,段选择符)
  8. opencv判断一个点是否在轮廓内pointPolygonTest的用法
  9. Burnside引理的简要证明
  10. 从源码的角度理解Glide的执行流程