【统计子矩阵——部分前缀和+双指针】

题目

代码

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 510;
int s[N][N];
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    
    int n, m, k;
    cin >> n >> m >> k;
    
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= m; j++)
        {
            cin >> s[i][j];
            s[i][j] += s[i-1][j];
        }
    
    ll ans =  0;
    for(int i = 1; i <= n; i++)
    {
        for(int j = i; j <= n; j++)
        {
            for(int l = 1, r = 1, sum = 0; r <= m; r++)
            {
                sum += s[j][r] - s[i-1][r];
                while(sum > k)
                {
                    sum -= s[j][l] - s[i-1][l];
                    l++;
                }
                
                ans += r - l + 1;
            }
        }
    }
    
    cout << ans;
}
相关推荐
C雨后彩虹1 分钟前
猴子爬山问题
java·数据结构·算法·华为·面试
y = xⁿ2 分钟前
20天速通LeetCodeday13:关于回溯
算法
计算机安禾5 分钟前
【c++面向对象编程】第1篇:从C到C++:面向对象编程思想入门
c语言·c++·算法
Master_oid5 分钟前
机器学习41:利用KNN算法实现手写数字识别
深度学习·算法·机器学习
OYangxf15 分钟前
力扣hot100【子串专题】
算法·leetcode·职场和发展
WL_Aurora20 分钟前
Python 算法基础篇之元组与列表
python·算法
Brilliantwxx22 分钟前
【算法题】递归树+哈希表+分治异或+双指针
开发语言·c++·笔记·算法
yugi98783822 分钟前
经典三维表面重建算法(C语言实现)
c语言·开发语言·算法
无限进步_25 分钟前
【C++】智能指针族谱:auto_ptr、unique_ptr、shared_ptr
java·开发语言·数据结构·c++·算法
Brilliantwxx26 分钟前
【C++】Stack和Queue(初认识和算法题OJ)
开发语言·c++·笔记·算法