差分题练习(区间更新)

一、差分的特点和原理

对于一个数组a[],差分数组diff[]的定义是:

对差分数组做前缀和可以还原为原数组:

利用差分数组可以实现快速的区间修改,下面是将区间[l, r]都加上x的方法:

diff[l] += x;
diff[r + 1] -= x;

在修改完成后,需要做前缀和恢复为原数组,所以上面这段代码的含义是:

diff[l]+=x表示将区间[l, n]都加上x但是[r+1,n]我们并不想加x,所以再将[r+1,n]减去x即可。

但是注意,差分数组不能实现“边修改边查询(区间和),只能实现"多次修改完成后多次查询"。如果要实现“边修改边查询”需要使用树状数组、线段树等数据结构。

二、差分的实现

直接循环O(n)实现即可,注意这里建议使得a[0] = 0,下标从1开始。

for(int i = 1; i <= n; ++i)diff[i] = a[i] - a[i - 1];

将区间[l, r]都加上x:

diff[l] += x;
diff[r + 1] -= x;

三、区间更新

用户登录

问题描述

给定一个长度为 n 的数组 a[1], a[2], ..., a[n]。同时给定 m 个操作,每个操作包含三个整数数据 x, y, z。每个操作的意义是给数组中下标为 x 到下标为 y 之间(包括 x 和 y)的元素的值都加上 z。

输入格式

输入包含多组数据,数据组数不大于 5。

每组数据的第一行有两个整数 n, m(0 < n, m < 100),分别表示数组的长度和操作的数量。

第二行有 n 个整数,分别代表 a[1], a[2], ..., a[n](0 ≤ a[i] < 10)的初始值。

接下来 m 行,每行包含三个整数 x, y, z(1 ≤ x ≤ y ≤ n, 0 < z < 10),表示一个操作。

输出格式

对于每组数据,输出一行,包含这个序列的所有元素的值,并且每个值之间应该以空格隔开。

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 9;
vector<int>a(N), b(N);void solve(int n, int m) {for (int i = 1; i <= n; i++)cin >> a[i];for (int i = 1; i <= n; i++)b[i] = a[i] - a[i - 1];// 初始化差分数组while (m--) {int l, r, x; cin >> l >> r >> x;b[l] += x; b[r + 1] -= x;  // 区间[l,r] [l]+x    [r+1]-x}for (int i = 1; i <= n; i++)a[i] = a[i - 1] + b[i];for (int i = 1; i <= n; i++)cout << a[i] << " \n"[i == n];必须是双引号,\之前可以写空格或者逗号
}
int main()
{int n, m;// 输入 n, 表示 a[n] 的元素个数// 输入 m, 表示 m 行while (cin >> n >> m)solve(n, m);return 0;
}

今天就先到这了!!!

看到这里了还不给博主扣个:
⛳️ 点赞☀️收藏 ⭐️ 关注!

你们的点赞就是博主更新最大的动力!
有问题可以评论或者私信呢秒回哦。

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

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

相关文章

PYTHON 自动化办公:压缩图片(PIL)

1、介绍 在办公还是学习过程中&#xff0c;难免会遇到上传照片的问题。然而照片的大小限制一直都是个问题&#xff0c;例如照片限制在200Kb之内&#xff0c;虽然有很多图像压缩技术可以实现&#xff0c;但从图像处理的专业来说&#xff0c;可以利用代码实现 这里使用的库函数是…

观成科技:加密C2框架Covenant流量分析

工具介绍 Covenant是一个基于.NET的开源C2服务器&#xff0c;可以通过HTTP/HTTPS 控制Covenant agent&#xff0c;从而实现对目标的远程控制。Covenant agent在与C2通信时&#xff0c;使用base64/AES加密载荷的HTTP隧道构建加密通道。亦可选择使用SSL/TLS标准加密协议&#xf…

Java网络通信TCP

目录 TCP两个核心类 服务端 1.用ServerSocker类创建对象并且手动指定端口号 2.accept阻塞连接服务端与客户端 3.给客户端提供处理业务方法 4.处理业务 整体代码 客户端 1.创建Socket对象&#xff0c;并连接服务端的ip与端口号 2.获取Socket流对象&#xff0c;写入数据…

Linux: Network: socket: sendto 如果返回0,是否一定代表发送成功?

最近遇到一个问题&#xff0c;虽然应用层使用的系统调用send已经返回成功&#xff0c;而且没有错误日志产生&#xff0c;也没有errno的设置。那是不是代表一定是没有问题&#xff1f;从抓包的结果看&#xff0c;虽然上层应用已经显示发出去&#xff0c;但是实际抓包的时候&…

被曝隐瞒添加剂、夸大产品功效,东方甄选再陷选品风波

号称专注为客户细心甄选好物的东方甄选&#xff08;&#xff08;HK:01797&#xff09;&#xff09;&#xff0c;又摊上事儿了。 近日&#xff0c;海关总署发布公告称&#xff0c;美国饮料生产企业JERRY&SONS PHARMACEUTICAL INC在申请注册时提供了虚假材料&#xff0c;且未…

C2_W2_Assignment_吴恩达_中英_Pytorch

Neural Networks for Handwritten Digit Recognition, Multiclass In this exercise, you will use a neural network to recognize the hand-written digits 0-9. 在本次练习中&#xff0c;您将使用神经网络来识别0-9的手写数字。 Outline 1 - Packages 2 - ReLU Activatio…

c语言经典测试题9

1.题1 #include <stdio.h> int main() { int i 1; sizeof(i); printf("%d\n", i); return 0; } 上述代码运行结果是什么呢&#xff1f; 我们来分析一下&#xff1a;其实这题的难点就是sizeof操作后i的结果是否会改变&#xff0c;首先我们创建了一个整型i&a…

分布式基础 --- Leader election

分布式基础 --- Leader election 为什么需要leader electionRing electionBully Algorithm 为什么需要leader election 在一组集群中, 需要选出一个leader来承担一些特别的任务, 比如 协调和控制系统操作&#xff1a;领导者负责协调和控制整个分布式系统的操作。它可以接收和处…

one4all 排坑记录

one4all 排坑记录 任务踩坑回顾动作踩坑动作踩坑动作新一步测试Habitat-sim 测试habitat-lab继续ONE4ALL 任务 看了《One-4-All: Neural Potential Fields for Embodied Navigation》这篇论文&#xff0c;感觉挺有意思&#xff0c;他也开源了代码。视觉语言导航是我一直想做的…

windows上elasticsearch的ik分词器的安装

下载 下载地址 在elasticsearch下的plugins文件夹下创建ik的文件夹 下载的ik压缩包解压到plugins/ik 重启elasticsearch 验证 http://ip:9200/_cat/plugins

SpringBoot3-核心原理

1. 事件和监听器 1. 生命周期监听 场景&#xff1a;监听应用的生命周期 1. 监听器-SpringApplicationRunListener 自定义SpringApplicationRunListener来监听事件&#xff1b; 编写SpringApplicationRunListener 实现类在 META-INF/spring.factories 中配置 org.springfram…

【蓝桥杯】错误票据

今天是2024年3月1号&#xff0c;蓝桥杯比赛还有一个月的时间&#xff0c;虽说自己不指望拿奖吧&#xff0c;但是还是有些莫i名的焦虑&#xff0c;这道题目都做不出来&#xff0c;感觉自己真的有点菜啊&#xff01;但是还好啦&#xff0c;我觉得是因为我没有题感&#xff0c;慢慢…

spring boot 整合 minio存储 【使用篇】

导入依赖 <!--minio--><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.0.3</version></dependency> yml配置&#xff08;默认配置&#xff09; max-file-size: 200MB 设置文件最大…

华为od机试C卷-开源项目热度榜单

1、题目描述 某个开源社区希望将最近热度比较高的开源项目出一个榜单&#xff0c;推荐给社区里面的开发者。 对于每个开源项目&#xff0c;开发者可以进行关注(watch)、收藏(star)、fork、提issue、提交合并请求(MR)等。 数据库里面统计了每个开源项目关注、收藏、fork、issue…

微服务API网关---APISIX

最近在做微服务调研&#xff0c;看到了apisix这个网关&#xff0c;于是进行了初步了解一下。 微服务是指&#xff0c;将大型应用分解成多个独立的组件&#xff0c;其中每个组件都各自的负责对应项目。 系统的架构大致经历了&#xff1a;单体应用架构–> SOA架构 -->微服务…

Linux多线程服务端编程:使用muduo C++网络库 学习笔记 附录D 关于TCP并发连接的几个思考题与试验

前几天作者在新浪微博上出了两道有关TCP的思考题&#xff0c;引发了一场讨论&#xff08;http://weibo.com/1701018393/eCuxDrtaONn&#xff09;。 第一道初级题目是&#xff1a;有一台机器&#xff0c;它有一个IP&#xff0c;上面运行了一个TCP服务程序&#xff0c;程序只侦听…

StarRocks实战——松果出行实时数仓实践

目录 一、背景 二、松果出行实时OLAP的演进 2.1 实时数仓1.0的架构 2.2 实时数仓2.0的架构 2.3 实时数仓3.0的架构 三、StarRocks 的引入 四、StarRocks在松果出行的应用 4.1 在订单业务中的应用 4.2 在车辆方向的应用 4.3 StarRocks “极速统一” 落地 4.4 StarRoc…

分布式ID生成系统之雪花算法详解

在当今的云计算和微服务架构盛行的时代&#xff0c;分布式系统已成为软件开发的重要组成部分。随着系统规模的扩大和业务的复杂化&#xff0c;对数据一致性和唯一性的要求也越来越高&#xff0c;尤其是在全局唯一标识符&#xff08;ID&#xff09;的生成上。因此&#xff0c;分…

yolov5训练太慢的解决方案

问题原因 训练太慢大多是因为没有安装CUDA和pytorch&#xff0c;导致的只有cpu在跑&#xff0c;显卡没跑 这就是很典型的。 解决方案 第一步&#xff1a;安装CUDA 在本机上面安装CUDA,记住只有N卡可以安装&#xff0c;一开始的电脑是自带CUDA的。 如果不是自带的CUDA&…

求数字的每一位之和

求数字的每一位之和 题目描述&#xff1a;解法思路&#xff1a;解法代码&#xff1a;运行结果&#xff1a; 题目描述&#xff1a; 输入一个整数m&#xff0c;求这个整数m的每⼀位之和&#xff0c;并打印。 测试1&#xff1a; 输⼊&#xff1a;1234 输出&#xff1a;10 测试2&…