前缀和、子矩阵的和;差分、差分矩阵

一、前缀和数组

要稍微注意前缀和数组从1开始

#include <iostream>using namespace std;const int N = 100010;int n, m;
int a[N], s[N];int main()
{scanf("%d%d", &n, &m);for (int i = 1; i <= n; i ++ ) scanf("%d", &a[i]);for (int i = 1; i <= n; i ++ ) s[i] = s[i - 1] + a[i]; // 前缀和的初始化while (m -- ){int l, r;scanf("%d%d", &l, &r);printf("%d\n", s[r] - s[l - 1]); // 区间和的计算}return 0;
}

二、子矩阵的和

S[i,j]表示本身及其左上部分矩阵所有元素的和,再用容斥原理计算某个子矩阵的和

#include <iostream>using namespace std;const int N = 1010;int n, m, q;
int s[N][N];int main()
{scanf("%d%d%d", &n, &m, &q);for (int i = 1; i <= n; i ++ )for (int j = 1; j <= m; j ++ )scanf("%d", &s[i][j]);for (int i = 1; i <= n; i ++ )for (int j = 1; j <= m; j ++ )s[i][j] += s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1];while (q -- ){int x1, y1, x2, y2;scanf("%d%d%d%d", &x1, &y1, &x2, &y2);printf("%d\n", s[x2][y2] - s[x1 - 1][y2] - s[x2][y1 - 1] + s[x1 - 1][y1 - 1]);}return 0;
}

三、差分数组

构造b数组,使得a数组是b数组的前缀和即可,对b数组进行O(1)复杂度操作再对b计算一次前缀和即可得到更新后的a数组,b[l]+c,b[r+1]-c

差分的构造即a[i]-a[i-1]

原数组的构造可以看作是对差分数组[i,i]区间的元素加ai

#include <iostream>using namespace std;const int N = 100010;int n, m;
int a[N], b[N];void insert(int l, int r, int c)
{b[l] += c;b[r + 1] -= c;
}int main()
{scanf("%d%d", &n, &m);for (int i = 1; i <= n; i ++ ) scanf("%d", &a[i]);for (int i = 1; i <= n; i ++ ) insert(i, i, a[i]);while (m -- ){int l, r, c;scanf("%d%d%d", &l, &r, &c);insert(l, r, c);}for (int i = 1; i <= n; i ++ ) b[i] += b[i - 1];for (int i = 1; i <= n; i ++ ) printf("%d ", b[i]);return 0;
}

四、差分矩阵

#include <iostream>using namespace std;const int N = 1010;int n, m, q;
int a[N][N], b[N][N];void insert(int x1, int y1, int x2, int y2, int c)
{b[x1][y1] += c;b[x2 + 1][y1] -= c;b[x1][y2 + 1] -= c;b[x2 + 1][y2 + 1] += c;
}int main()
{scanf("%d%d%d", &n, &m, &q);for (int i = 1; i <= n; i ++ )for (int j = 1; j <= m; j ++ )scanf("%d", &a[i][j]);for (int i = 1; i <= n; i ++ )for (int j = 1; j <= m; j ++ )insert(i, j, i, j, a[i][j]);while (q -- ){int x1, y1, x2, y2, c;cin >> x1 >> y1 >> x2 >> y2 >> c;insert(x1, y1, x2, y2, c);}for (int i = 1; i <= n; i ++ )for (int j = 1; j <= m; j ++ )b[i][j] += b[i - 1][j] + b[i][j - 1] - b[i - 1][j - 1];for (int i = 1; i <= n; i ++ ){for (int j = 1; j <= m; j ++ ) printf("%d ", b[i][j]);puts("");}return 0;
}

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

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

相关文章

启用BBR拥塞控制算法

目录 &#x1f4cb; 先决条件 &#x1f527; 启用步骤 &#x1f4dd; 额外检查与说明 ⚠️ 注意事项 BBR&#xff08;Bottleneck Bandwidth and Round-trip time&#xff09;是谷歌开发的一种TCP拥塞控制算法&#xff0c;它能有效提升网络传输速度和性能&#xff0c;尤其在…

Python:AI开发第一语言的全面剖析

文章目录引言1. Python的历史与AI开发的契合1.1 Python的诞生与设计哲学1.2 Python与AI发展的历史交汇2. 语言特性如何支持AI开发2.1 动态类型与交互式编程2.2 简洁优雅的语法2.3 高级数据结构的原生支持2.4 函数式编程特性2.5 强大的元编程能力3. 丰富的AI生态系统和库支持3.1…

Nikto 漏洞扫描工具使用指南

目录 ✨ 核心功能一览 &#x1f680; 基本使用方法 1. 扫描单个目标 2. 指定端口扫描 3. 扫描 HTTPS 目标 使用 -ssl 参数主要有两个核心原因 ⚙️ 高级使用技巧 1. 使用代理扫描 2. 保存扫描结果 3. 使用特定插件 4.交互命令 ✨ 核心功能一览 Nikto 是一款开源的 W…

FunASR的Java实现Paraformer实时语音识别 | 一款无需联网的本地实时字幕软件

0. 开发背景 我们在看直播时&#xff0c;没有视频字幕&#xff0c;可能看惯了视频字幕&#xff0c;来到直播中缺少字幕会感觉不习惯&#xff0c;特别是对于听力障碍的人群&#xff0c;只能依赖于字幕&#xff0c;那么这个软件可以解决直播&#xff0c;在线会议等场景中无字幕的…

从机器学习的角度实现 excel 中趋势线:揭秘梯度下降过程

1. 引言&#xff1a;Excel 的“一键魔法”背后藏着什么智慧&#xff1f;在 Excel 中&#xff0c;我们只需右键 → 添加趋势线&#xff0c;一条完美的直线就出现了。它快得像魔法&#xff0c;但魔法背后&#xff0c;是数学的严谨。今天&#xff0c;我们不关心 Excel 内部用了什么…

关于上拉电阻

上拉电阻的作用&#xff1a;辅助浮空状态输出高电平 其实就是确定这根线的电平&#xff0c;不能让他处于一种未知的状态。 其次也可以起到限制电流的作用&#xff0c;防止损坏原件 那么上拉电阻如何取值&#xff1f; 首先来看一下驱动能力。 因为线上是一定有寄生电容的&am…

PiscCode构建Mediapipe 手势识别“剪刀石头布”小游戏

在计算机视觉与人机交互领域&#xff0c;手势识别是一个非常有趣的应用场景。本文将带你用 Mediapipe 和 Python 实现一个基于摄像头的手势识别“剪刀石头布”小游戏&#xff0c;并展示实时手势与游戏结果。 1. 项目概述 该小游戏能够实现&#xff1a; 实时检测手势&#xff0…

【VoNR】VoNR 不等于 VoLTE on 5G

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…

计算机网络:网络设备在OSI七层模型中的工作层次和传输协议

OSI七层模型&#xff08;物理层、数据链路层、网络层、传输层、会话层、表示层、应用层&#xff09;中&#xff0c;不同网络设备因功能不同&#xff0c;工作在不同层次。以下是典型网络设备的工作层次及核心功能&#xff1a;1. 物理层&#xff08;第1层&#xff09; 核心功能&a…

RSA-e和phi不互素

1.题目import gmpy2 import libnum p 1656713884642828937525841253265560295123546793973683682208576533764344166170780019002774068042673556637515136828403375582169041170690082676778939857272304925933251736030429644277439899845034340194709105071151095131704526…

基于单片机蒸汽压力检测/蒸汽余热回收

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;单片机作品题目速选一览表&#x1f680; &#x1f449;&#x1f449;&#x1f449;&#x1f449;单片机作品题目功能速览&#x1f680; &#x1f525;更多文章戳&#x1f449;小新单片机-CSDN博客&#x1f68…

https 协议与 wss 协议有什么不同

HTTPS 是用于网页数据传输的安全协议&#xff0c;而 WSS 是用于实时双向通信&#xff08;如聊天、直播&#xff09;的安全协议&#xff0c;二者的设计目标、应用场景、底层逻辑均存在本质区别。以下从 7 个核心维度展开对比&#xff0c;并补充关键关联知识&#xff0c;帮助彻底…

主流分布式数据库集群选型指南

以下是关于主流分布式可扩展数据库集群的详细解析&#xff0c;涵盖技术分类、代表产品及适用场景&#xff0c;帮助您高效选型&#xff1a;一、分布式数据库核心分类 1. NewSQL 数据库&#xff08;强一致性 分布式事务&#xff09;产品开发方核心特性适用场景TiDBPingCAPHTAP架…

#T1359. 围成面积

题目描述编程计算由“*”号围成的下列图形的面积。面积计算方法是统计*号所围成的闭合曲线中水平线和垂直线交点的数目。如下图所示&#xff0c;在1010的二维数组中&#xff0c;有“*”围住了15个点&#xff0c;因此面积为15。输入1010的图形。输出输出面积。样例输入数据 10 0…

Hive on Tez/Spark 执行引擎对比与优化

在大数据开发中,Hive 已经成为最常用的数据仓库工具之一。随着业务数据规模的不断扩大,Hive 默认的 MapReduce 执行引擎 显得笨重低效。为了提升查询性能,Hive 支持了 Tez 和 Spark 作为底层执行引擎。本文将带你对比 Hive on Tez 与 Hive on Spark 的区别,并分享调优经验。…

深入理解 Next.js 的路由机制

深入理解 Next.js 的路由机制 作者&#xff1a;码力无边在上一篇文章中&#xff0c;我们成功创建并运行了第一个 Next.js 应用。当你打开项目文件夹时&#xff0c;你可能会注意到一个名为 pages 的目录。这个目录看似普通&#xff0c;但它却是 Next.js 路由系统的核心。今天&am…

modbus_tcp和modbus_rtu对比移植AT-socket,modbus_tcp杂记

modbus_rtu通信时没有连接过程&#xff0c;主机和从机各自初始化自身串口就行了&#xff0c;而rtu需要确定从机ID。注:在TCP连接中&#xff0c;不同的网卡有不同的IP&#xff0c;port对应具体的程序。/* 先读取数据 */for (i 0; i < len; i){if (pdPASS ! xQueueReceive(re…

Docker Compose 详解:从安装到使用的完整指南

在现代容器化应用开发中&#xff0c;Docker Compose 是一个不可或缺的工具&#xff0c;它能够帮助我们轻松定义和运行多容器的 Docker 应用程序。 一、什么是 Docker Compose&#xff1f; Docker Compose 是 Docker 官方提供的一个工具&#xff0c;用于定义和运行多容器 Dock…

springboot配置多数据源(mysql、hive)

MyBatis-Plus 不能也不建议同时去“控制” Hive。它从设计到实现都假定底层是 支持事务、支持标准 SQL 方言 的 关系型数据库&#xff08;MySQL、PostgreSQL、Oracle、SQL Server 等&#xff09;&#xff0c;而 Hive 两者都不完全符合。如果操作两个数据源都是mysql或者和关系数…

2025年上海市星光计划第十一届职业院校技能大赛高职组“信息安全管理与评估”赛项交换部分前6题详解(仅供参考)

1.北京总公司和南京分公司有两条裸纤采用了骨干链路配置,做必要的配置,只允许必要的Vlan 通过,不允许其他 Vlan 信息通过包含 Vlan1,禁止使用 trunk链路。 骨干链路位置​​:总公司 SW 与分公司 AC 之间的两条物理链路(Ethernet 1/0/5-6 必要 VLAN​​: •总公司:Vlan…