【算法|前缀和系列No.2】牛客网 DP35 【模板】二维前缀和

news2025/1/3 1:02:46

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【手撕算法系列专栏】【牛客网刷题】
🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助
🍓希望我们一起努力、成长,共同进步。
在这里插入图片描述

点击直接跳转到该题目

目录

  • 1️⃣题目描述
  • 2️⃣题目解析
  • 3️⃣解题代码

1️⃣题目描述

题目描述:
给你一个 n 行 m 列的矩阵 A ,下标从1开始。

接下来有 q 次查询,每次查询输入 4 个参数 x1 , y1 , x2 , y2

请输出以 (x1, y1) 为左上角 , (x2,y2) 为右下角的子矩阵的和。

输入描述:
第一行包含三个整数n,m,q.

接下来n行,每行m个整数,代表矩阵的元素

接下来q行,每行4个整数x1, y1, x2, y2,分别代表这次查询的参数

注意:

  • 1 ≤ n , m ≤ 1000
  • 1 ≤ q ≤ 1 0 5 10^{5} 105
  • - 1 0 9 10^{9} 109 <= a[i][j] <= 1 0 9 10^{9} 109
  • 1 <= x1 <= x2 <= n
  • 1 <= y1 <= y2 <= m

输出描述:

输出q行,每行表示查询结果。

示例:

输入:
3 4 3
1 2 3 4
3 2 1 0
1 5 7 8
1 1 2 2
1 1 3 3
1 2 3 4

输出:
8
25
32

2️⃣题目解析

状态表示及状态转移方程:

  • dp[i][j] :表示从坐标(1,1)到坐标(i,j)中所有元素的和。
  • dp[i][j] = dp[i - 1][j] + dp[i][j - 1] + arr[i][j] - dp[i - 1][j - 1];

最后输出结果:dp[x2][y2] - dp[x2][y1 - 1] - dp[x1 - 1][y2] + dp[x1 - 1][y1 - 1]

3️⃣解题代码

解题代码1:

#include<iostream>
#include<vector>
using namespace std;

const int N = 1e3 + 10, M = 1e3 + 10;

int main()
{
    int n , m , q;
    cin >> n >> m >> q;
    long long arr[N][M];
    vector<vector<long long>> dp(n + 1,vector<long long>(m + 1));
    for(int i = 1;i <= n;i++)
    {
        for(int j = 1;j <= m;j++)
        {
            cin >> arr[i][j];
            dp[i][j] = dp[i][j - 1] + arr[i][j];
        }
    }
    while(q--)
    {
        int x1,y1,x2,y2;
        long long ret = 0;
        cin >> x1 >> y1 >> x2 >> y2;
        for(int i = x1;i <= x2;i++)
        {
            ret += (dp[i][y2] - dp[i][y1 - 1]);
        }
        cout << ret << endl;
    }
           
    return 0;
}

解题代码2:

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    int n,m,q;
    cin >> n >> m >> q;
    vector<vector<int>> arr(n + 1,vector<int>(m + 1));
    for(int i = 1;i <= n;i++)
        for(int j = 1;j <= m;j++)
            cin >> arr[i][j];

    // 创建前缀和矩阵
    vector<vector<long long>> dp(n + 1,vector<long long>(m + 1));
    for(int i = 1;i <= n;i++)
        for(int j = 1;j <= m;j++)
            dp[i][j] = dp[i - 1][j] + dp[i][j - 1] + arr[i][j] - dp[i - 1][j - 1];

    // 使用前缀和矩阵
    int x1,y1,x2,y2;
    while(q--)
    {
        cin >> x1 >> y1 >> x2 >> y2;
        cout << dp[x2][y2] - dp[x2][y1 - 1] - dp[x1 - 1][y2] + dp[x1 - 1][y1 - 1] << endl;
    }
    return 0;
}

最后就是代码通过啦!!!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1097861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

功能测试-本地缓存修改时间戳:操作支付中心页面触发二次挽留弹窗

需求&#xff1a;在活动期间&#xff0c;指定的用户在关闭支付中心个人会员页时&#xff0c;增加二次挽留弹窗机制 涉及端口&#xff1a;PC官网支付中心、移动端官网支付中心、插件端支付中心 触发频率&#xff1a;用户每天触发一次&#xff08;需求写的其实这是错误的&#…

实赣!赣州与开源网安联手打造软件供应链安全检测中心

10月16日&#xff0c;开源网安与赣州市行政审批局、赣州市网信办三方先后签署战略协议及投资协议&#xff0c;签约后将在赣州打造软件供应链安全检测中心&#xff0c;为数字政府、数字经济等领域提供全面安全检测和软件安全运营监测等服务&#xff0c;提升软件的安全与质量&…

【IEEE会议】第三届信息技术与当代体育国际学术会议(TCS 2023)

【IEEE】第三届信息技术与当代体育国际学术会议&#xff08;TCS 2023&#xff09; 2023 3rd International Conference on Information Technology and Contemporary Sports 2023年第三届信息技术与当代体育国际学术会议&#xff08;TCS 2023&#xff09;将于2023年12月22-24…

阿里云服务器ECS实例规格族c/g/r等字母说明

阿里云服务器ECS实例命名规则&#xff1a;ecs.<规格族>.large字母含义命名说明&#xff0c;包括x86、ARM架构、GPU异构计算、弹性裸金属、超级计算集群SCC云服务器&#xff0c;c代表计算型、g代表通用型、r代表内存型、u代表通用算力型、e代表经济型e实例&#xff0c;阿里…

【题解】[NOIP2016]玩具谜题

题目描述 P1563 [NOIP2016 提高组] 玩具谜题 前置知识 无 题目分析 题目比较绕&#xff0c;关键是要搞清楚顺时针、逆时针和左、右&#xff0c;把每个指令转换为数组下标的移动。 首先提取出关键信息&#xff1a; 输入顺序为逆时针 面朝圈内&#xff1a;左->顺时针&am…

JAVASSMMYSQL高校学生选课系统01483-计算机毕业设计项目选题推荐(附源码)

目 录 摘要 1 绪论 1.1 研究背景 1.2开发意义 1.3ssm框架 1.4论文结构与章节安排 2 2 高校学生选课系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3数据删除流程 2.3 系统功能分析 2.3.1功能性分析 2.3.2非功能性分析…

哪个文字转语音配音软件最好用?

现在TTS技术不断发展&#xff0c;文字转语音技术已经越来越成熟&#xff0c;声音听着拟人度非常高&#xff0c;现在好用的软件也不在少数。很多手机里面都有自带的朗读功能&#xff0c;如果觉得声音不够&#xff0c;也可以自己下载软件使用。给大家分享一下我一直使用的一款文字…

全志R128 BLE最高吞吐量测试正确配置测试

在R128使用前我们需要了解BLE的最高吞吐量&#xff0c;以方便评估相关功能的开发。 首先我们了解一下哪些因素会影响蓝牙的吞吐量&#xff1a; 1、蓝牙版本与PHY&#xff1a; 蓝牙设备的版本和物理层&#xff08;PHY&#xff09;对于吞吐量有很大影响。例如&#xff0c;R128设…

基于Python的车牌识别系统实现

本文将以基于Python的车牌识别系统实现为方向&#xff0c;介绍车牌识别技术的基本原理、常用算法和方法&#xff0c;并详细讲解如何利用Python语言实现一个完整的车牌识别系统。 目录 引言车牌识别技术的应用场景Python在车牌识别领域的优势 车牌识别技术概述图像处理和计算机视…

《软件方法》第1章2023版连载(07)UML的历史和现状

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 1.3 统一建模语言UML 1.3.1 UML的历史和现状 上一节阐述了A→B→C→D的推导是不可避免的&#xff0c;但具体如何推导&#xff0c;有各种不同的做法&#xff0c;这些做法可以称为“方…

正点原子嵌入式linux驱动开发——新字符设备驱动实验

经过之前两篇笔记的实战操作&#xff0c;已经掌握了Linux字符设备驱动开发的基本步骤&#xff0c;字符设备驱动开发重点是使用register_chrdev函数注册字符设备&#xff0c;当不再使用设备的时候就使用unregister_chrdev函数注销字符设备&#xff0c;驱动模块加载成功以后还需要…

广义回归神经网络预测程序

欢迎关注“电击小子程高兴的MATLAB小屋” %% 学习目标:广义回归神经网络 %% 训练速度快 非线性映射能力强 常用于函数逼近 clear all; close all; P1:30; T3*sin(P); netnewgrnn(P,T,0.3); %径向基函数的分布密度是0.3 ysim(net,P); figure; plot(P,T,:,P,T-y,-o);

GitHub下载量从19暴涨到5W,这份架构师学习路线只用了一晚

技术人P8什么概念&#xff1f; 正常本科校招进阿里&#xff0c;6年以下别想P8&#xff0c;普通社招进入阿里&#xff0c;30岁以下P8几乎没有&#xff0c;P8不仅仅是个人技术能力强&#xff0c;还有要有撑起整个团队的能力&#xff1b; 这位大佬在阿里已经工作了8年&#xff0…

zabbix部署与监控

目录 一、什么是zabbix&#xff1f; 二、zabbix 监控原理 三、Zabbix 新特性 三、Zabbix 功能组件 四、部署 zabbix zabbix的服务端部署 zabbix的客户端部署 zabbix的服务端部署 一、什么是zabbix&#xff1f; zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络…

51单片机点阵

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、点阵是什么&#xff1f;1.点阵的原理2. 3*3 点阵显示原理3. 8*8点阵实物图4. 8*8点阵内部原理图5. 16*16点阵实物图&#xff0c;显示原理 二、使用步骤1.先…

【C++从0到王者】第三十八站:位图和布隆过滤器

文章目录 一、哈希桶的改进1.链表与树结构的结合2.扩容使用质数 二、位图1.位图的概念2.位图的实现3.位图的其他应用 三、布隆过滤器1.布隆过滤器的提出2.布隆过滤器的实现3.布隆过滤器的应用 一、哈希桶的改进 1.链表与树结构的结合 有时候&#xff0c;在极端场景下&#xf…

一本由红帽专家亲作的Quarkus实战型入门书籍——《Kubernetes原生微服务开发》

Kubernetes原生微服务开发 出版社&#xff1a; 清华大学出版社 作者&#xff1a;[美] 约翰克林甘&#xff08;John Clingan&#xff09;、肯芬尼根(Ken Finnigan) 出版时间&#xff1a;2023年6月 微服务开发并不容易。其中涉及大量的概念与复杂的技术&#xff0c;令很多开发者…

ARP协议(地址解析协议) 的作用和操作过程

目录 1.问题: &#xff08;在同一个LAN局域网内&#xff09;如何在已知目的接口的IP地址前提下确定其MAC地址&#xff1f;2.问题&#xff1a;现在假设主机A要向目的主机B发送一个数据报&#xff0c;怎么发送呢&#xff1f;2.1在一个局域网内时2.1.1情况一&#xff1a;2.1.2情况…

从基础到卷积神经网络(第15天)

1. PyTorch 神经网络基础 1.1 模型构造 1. 块和层 首先,回顾一下多层感知机 import torch from torch import nn from torch.nn import functional as Fnet = nn.Sequential(nn.Linear(20, 256), nn.ReLU(), nn.Linear(256, 10))X = torch.rand(2, 20) # 生成随机输入(批…

年龄越大,越要小心逢九年

老话有云&#xff1a;年龄逢九&#xff0c;灾祸频有。在我国的许多农村地区&#xff0c;至今还流传着这么句话&#xff0c;这句话的大概意思是说&#xff1a;每个人命理年龄逢九&#xff0c;就会有个坎&#xff0c;年龄越大&#xff0c;坎就越厉害&#xff0c;所以&#xff0c;…