【模板】差分

本题链接:登录—专业IT笔试面试备考平台_牛客网

题目:

样例:

输入
3 2
1 2 3
1 2 4
3 3 -2
输出
5 6 1

思路:

        一直以来,我总是不太理解差分和树状数组操作区别。

        现在摸了一下开始有所理解了。

        差分和树状数组的区别:

        树状数组:可以边区间插入操作边查询。

        差分:一系列区间操作后,最后确定结果序列

        

差分原理:


原数组为 a
差分数组为 b
前缀和数组为 c

这里要注意的是,操作差分的时候,+x 前后的关系
差分 就是 差分数组的前缀和 = 原数组相应位置的前缀和
例如:
b1 = a1 - 0
b2 = a2 - a1
b3 = a3 - a2

b1 + b2 + b3 = c3c3 = a1 + a2 + a3

所以相应关系后,操作差分数组函数如下,理解相应核心内容:

初始时添加数值序列:

for(int i = 1,x;i <= n;++i)
{cin >> x;Insert(i,i,x);
}

区间添加修改函数:

inline void Insert(int l, int r, int x)
{a[l] += x;          // 前缀和 a[l] += x;a[r + 1] -= x;      // 区间 a[r] 因为前面 +x 了,所以要维持差分前缀和不变,所以 r+1 -= x
}

获取最终操作结果序列函数:

inline void getArray()
{for (int i = 1; i <= n; ++i)        // 最后求 差分的前缀和{a[i] += a[i - 1];               // 差分的前缀和,就是相应原数组操作后的前缀和}
}

代码详解如下:

#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
#include <algorithm>
#include <unordered_map>
#define endl '\n'
#define int long long
#define YES puts("YES")
#define NO puts("NO")
#define umap unordered_map
#define All(x) x.begin(),x.end()
#pragma GCC optimize(3,"Ofast","inline")
#define IOS std::ios::sync_with_stdio(false),cin.tie(0), cout.tie(0)
using namespace std;
const int N = 2e6 + 10;
inline void solve();signed main()
{
//	freopen("a.txt", "r", stdin);IOS;int _t = 1;
//	cin >> _t;while (_t--){solve();}return 0;
}
int n,q,a[N];inline void Insert(int l,int r,int x)
{a[l] += x;a[r + 1] -= x;
}
inline void getArray()
{for(int i = 1;i <= n;++i){a[i] += a[i - 1];}
}
inline void solve()
{cin >> n >> q;for(int i = 1,x;i <= n;++i){cin >> x;Insert(i,i,x);	// 初始插入序列}while(q--){int l,r,x;cin >> l >> r >> x;Insert(l,r,x);	// 区间修改}getArray();	// 获取最后系列操作后结果序列for(int i = 1;i <= n;++i) cout << a[i] << ' ';
}

最后提交:

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

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

相关文章

7-6 jmu-JavaPython-统计文字中的单词数量并按出现次数排序(分数 25)

现在需要统计若干段文字(英文)中的单词数量&#xff0c;并且还需统计每个单词出现的次数。 注1&#xff1a;单词之间以空格(1个或多个空格)为间隔。注2&#xff1a;忽略空行或者空格行。 基本版: 统计时&#xff0c;区分字母大小写&#xff0c;且不删除指定标点符号。 进阶版…

硬件开源--Model 3C(简称M3)芯片驱动RGB接口86中控屏PCBA原理图

针对市场IOT应用需求&#xff0c;基于启明智显的Model3C芯片(简称M3)设计开发的一款超高性价比的86型中控屏PCBA原理图开源。 Model3C芯片(简称M3)是一款基于 RISC-V 的高性能、国产自主、工业级高清显示与智能控制 MCU&#xff0c;配备强大的 2D 图形加速处理器、PNG/JPEG 解码…

LeetCode 202. 快乐数

LeetCode 202. 快乐数 1、题目 力扣题目链接&#xff1a;202. 快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;…

关于 Windows10 计算机丢失 MSVCP120.dll 的解决方法

今天学长跟平时一样打开电脑开始发布文章需要用到Adobe Photoshop CC 2018的时候居然给我来个Photoshop.exe-系统错误、无法启动此程序&#xff0c;因为计算机中丢失MSVCP120.dll 尝试重新安装该程序以解决此问题&#xff0c;安装上面的说明重新安装了我的Photoshop CC 打开还是…

(八)PostgreSQL的数据库管理

PostgreSQL的数据库管理 基础信息 OS版本&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a;16.2 pg软件目录&#xff1a;/home/pg16/soft pg数据目录&#xff1a;/home/pg16/data 端口&#xff1a;57771 创建数据库 CREATE DATABASE创建一…

财务数字化转型如何找到打通业财融合的关键点

随着企业信息联网核查系统上线及即将到来的金税四期&#xff0c;企业将面临全业务、全方位、全流程的监控&#xff0c;企业“合不合规、经不经得起核查”&#xff0c;成为企业经营的一个重大考题。在此大环境下&#xff0c;财税安全成为企业经营中重要一环&#xff0c;尤为突出…

算法打卡day46|动态规划篇14| Leetcode 1143.最长公共子序列、1035.不相交的线、53. 最大子序和

算法题 Leetcode 1143.最长公共子序列 题目链接:1143.最长公共子序列 大佬视频讲解&#xff1a;1143.最长公共子序列视频讲解 个人思路 本题和718. 最长重复子数组很相像&#xff0c;思路差不多还是用动态规划。区别在于这题不要求是连续的了&#xff0c;但要有相对顺序 解…

PHP婚恋小程序开发源码支持微信+公众号+APP

随着社会的发展和人们生活节奏的加快&#xff0c;传统的相亲方式已经不能满足现代人的需求。在此背景下&#xff0c;有人想到通过线上小程序的方式来满足更多的人进行相亲&#xff0c;所以在此情况下&#xff0c;婚恋相亲小程序由此出现。婚恋相亲小程序的功能有会员功能&#…

MobX进阶:从基础到高级特性全面探索

MobX 提供了丰富的高级特性,包括计算属性、反应式视图、中间件、异步流程控制、依赖注入和动态 observable 、在服务端渲染和 TypeScript 支持方面提供了良好的集成。这些特性进一步增强了 MobX 在状态管理方面的灵活性和可扩展性,使其成为一个功能强大、易于使用的状态管理解决…

openkylin系统通过网线连接ubuntukylin系统上网攻略

openkylin系统通过网线连接ubuntukylin系统上网攻略 主机1&#xff1a;x64 amd &#xff0c;系统&#xff1a;ubuntukylin 22.04 &#xff0c;状态&#xff1a;通过wifi连接热点进行上网&#xff0c;并共享网络。 主机2&#xff1a;x64 intel &#xff0c;系统&#xff1a;ope…

拓扑排序(Topological Sorting)

拓扑排序可以使用邻接表&#xff0c;邻接矩阵来存储。 DAG有向邻接图才有拓扑排序&#xff0c;非DAG没有。 什么是拓扑排序&#xff08;Topological Sorting&#xff09; - 简书 数据结构&#xff08;八&#xff09;&#xff1a;邻接表与邻接矩阵 - 简书 Python3 列表 | 菜…

大世界基尼斯见证辉煌,云仓酒庄首届酒类培训新高度诞生

近日&#xff0c;一场规模盛大的酒类培训盛会&#xff0c;在云仓酒庄的精心组织下圆满落幕。此次培训活动以其卓着的成果和盛大的规模&#xff0c;创下了大世界基尼斯纪录&#xff0c;为酒类培训领域树立了新的标杆。这一成就的取得&#xff0c;背后是云仓酒庄团队无数的心血与…

GPT 作词 + Suno 作曲|2 分钟成就一个音乐梦想!

嗨&#xff01;我是小谷&#xff0c;大家好久不见~ 今天&#xff0c;我要和大家宣布一个好消息&#xff01;&#xff01;&#xff01; 我出歌啦&#xff01;&#xff01; 词曲都是我自己&#xff08;借助 AI&#xff09;创作的 作为个人第一支单曲&#xff0c; 我给这首歌取…

Leetcode 11.盛最多水的容器(暴力->双指针)

给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容器。 示例 …

MAC系统安装PHP、Java、Python、mysql、Composer等环境无权限问题的详细操作方法说明。

本篇文章主要讲解MAC系统安装PHP、Java、Python、mysql、Composer等环境无权限问题的详细操作方法说明。通过本篇文章你可以快速掌握brew安装相对应环境的能力。 作者&#xff1a;任聪聪 日期&#xff1a;2024年4月12日 一、brew介绍及安装说明 官网地址&#xff1a;https://b…

node.js 模版引擎

模版引擎 一、什么是模版引擎&#xff1a; 模版引擎是为了使用户界面与业务逻辑&#xff08;内容&#xff09;分离而产生的&#xff0c;它可以生成特定格式的文档&#xff0c;用于网站的模版引擎就会生成一个标准的文档就是将模版文件和数据通过模版引擎生成一个html文档。 常…

财务信息化与财务软件有何区别与联系?

财务产品与财务信息化&#xff0c;两者究竟有何不同&#xff0c;又有何相通之处&#xff1f;或许&#xff0c;你心中也充满了这样的疑惑。那么&#xff0c;让我用一则小故事&#xff0c;为你揭晓其中的秘密。 想象这样一个场景&#xff0c;长尾狐狸&#xff0c;作为饭团公司的…

2024-8.python作用域+函数其他

变量的作用域 讲到了函数就必须介绍变量的作用域相关。 作用域指的是变量的有效范围。变量并不是在哪个位置都可以访问的&#xff0c;访问权限取决于这个变量是在哪里赋值的&#xff0c;也就是在哪个作用域内赋的值。变量在哪个作用域内赋值&#xff0c;则表示该变量的作用域就…

艾体宝方案 | ITT-Profitap IOTA——铁路运输的远程网络捕获和故障排除方案

在移动互联时代&#xff0c;铁路运输的数字化转型已成不可逆转的趋势。然而&#xff0c;随之而来的是对网络连接质量和故障排查的更高要求。本文将探讨如何利用艾体宝Profitap IOTA技术&#xff0c;在火车上实现远程网络捕获和故障排查&#xff0c;助力铁路运输行业迈向智能化未…

[Kubernetes] kubectl 命令指南

文章目录 1. 检查集群状态2. 使用 Pod3. 使用部署4. 使用服务5. 使用 ConfigMap 和 Secret6.调试与故障排除7. 清理8. 使用命名空间9. 管理持久卷10. 处理节点11. 资源配额和限制范围12. 访问API对象 1. 检查集群状态 kubectl cluster-info&#xff1a;此命令提供有关集群及其主…