首页 > 其他分享 >acwing 4405.统计子矩阵的和

acwing 4405.统计子矩阵的和

时间:2023-04-02 09:33:10浏览次数:54  
标签:边界 int 4405 矩阵 long acwing

原题链接

解题思路

通过i和j来控制子矩阵的左右边界,通过s和t来控制子矩阵的上下边界,
在子矩阵的和小于k时候,统计子矩阵的个数。

代码

#include<iostream>
using namespace std;

const int N = 550;

int a[N][N];
// i 与 j 控制左右边界, s t控制上下边界 计算二维矩阵和
int main(){
    int n, m,k;
    cin >> n >> m >> k;
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= m; j ++){
            cin >> a[i][j];
            a[i][j] = a[i][j] + a[i - 1][j] + a[i][j - 1] - a[i - 1][j - 1];//二维前缀和公式
        }
    long long ans = 0;
    for(int i = 1; i <= m; i++){
        for(int j = i; j <= m; j++){
            for(int s = 1, t = 1; t <= n; t++){
                while(s <= t && a[t][j] - a[s - 1][j] - a[t][i - 1] + a[s - 1][i - 1] > k) s++;//只要大于k就令上边界向下逼近
                if(s <= t) ans += t - s + 1;//小于k的时候,加上子矩阵的个数
            }
        }
    }
    cout << ans;
    return 0;
}

标签:边界,int,4405,矩阵,long,acwing
From: https://www.cnblogs.com/index-12/p/17279930.html

相关文章

  • AcWing第97场周赛复盘总结
    4944.热身计算-AcWing题库给定两个正整数$a,b$,请你分别计算$\min(a,b)$以及$\lfloor\frac{|a-b|}{2}\rfloor$的值。$\lfloor\frac{|a-b|}{2}\rfloor$表示不大于$\frac{|a-b|}{2}$的最大整数。输入格式共一行,包含两个正整数$a,b$。输出格式共一......
  • AcWing 第 97 场周赛 ABC(dfs)
    https://www.acwing.com/activity/content/competition/problem_list/3088/果然绩点成绩和竞赛水平总得寄一个(tome4944.热身计算#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<LL,LL>PII;constLLMAXN=1e18,MINN=-MAXN,INF=0x3f3f3......
  • HJ70_矩阵乘法计算量估算_入门栈使用的典型题
    反思:这题咋一看不难,但是越做坑越多,按照一开始不完善的思路无法完全通过测试。参看高赞答案,代码行数特少。但是没考虑一个括号中有三个矩阵的情况。思路:1、判断哪两个矩阵开始相乘的条件:遇到“)”时,该字符前两个矩阵开始相乘。把相乘后矩阵行列数组压入栈栈中。该题默认不存在(A(......
  • HJ69_矩阵乘法_数组
    思路:三层循环实现矩阵相乘。importsysa=[]forlineinsys.stdin:  a.append(list(map(int,line.strip().split())))#print(a)matrix1=a[3:3+a[0][0]]matrix2=a[3+a[0][0]:]nw=[[0foriinrange(a[2][0])]foriinrange(a[0][0])]forminrange(a[0][0]): ......
  • 华为OD机试 和最大子矩阵
    本期题目:和最大子矩阵题目给定一个二维整数矩阵要在这个矩阵中选出一个子矩阵使得这个子矩阵内所有的数字和尽量大我们把这个子矩阵成为“和最大子矩阵”子矩阵的选取原则,是原矩阵中一段相互连续的矩形区域输入输入的第一行包含两个整数N,M (1<=N,M<=10) 表示一个......
  • 华为OD机试 和最大子矩阵
    本期题目:和最大子矩阵题目给定一个二维整数矩阵,要在这个矩阵中选出一个子矩阵,使得这个子矩阵内所有的数字和尽量大我们把这个子矩阵成为“和最大子矩阵”,子矩阵的选取原则,是原矩阵中一段相互连续的矩形区域。输入输入的第一行包含两个整数N,M (1<=N,M<=10) 表示一个N......
  • AcWing 244. 谜一样的牛
    有 n 头奶牛,已知它们的身高为 1∼n且各不相同,但不知道每头奶牛的具体身高。现在这 n头奶牛站成一列,已知第 i 头牛前面有 Ai 头牛比它低,求每头奶牛的身高。输入格式第 1 行:输入整数 n。第 2..n 行:每行输入一个整数 Ai,第 i行表示第 i 头牛前面有 Ai 头牛比它......
  • AcWing 1215. 小朋友排队
    n个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是0。如果某个小朋友第一次被要求交换,则他的不高兴程度增加1,如果第二次要求他交换,则他的不高兴程度增......
  • 坐标系旋转矩阵以及坐标系不变旋转点的旋转矩阵
    1.坐标系不动的情况下,绕原点旋转2.旋转坐标系的情况2.1推导情况......
  • AcWing 3956. 截断数组
    给定一个长度为n的数组a1,a2,…,an。现在,要将该数组从中间截断,得到三个非空子数组。要求,三个子数组内各元素之和都相等。请问,共有多少种不同的截断方法?输入格式第......