【总结】差分原理详解(通俗易懂)
什么是差分?
差分就是将数列中的每一项分别与前一项数做差。
首先一个数组 :1 2 5 4 7 3
那么差分之后 :1 1 3 -1 3 -4 -3
其实就是 a[i]=a[i]+a[i−1]a[i] = a[i] + a[i-1]a[i]=a[i]+a[i−1]
注意得到的差分序列第一个数和原来的第一个数一样(相当于第一个数减0)
差分序列最后比原序列多一个数(相当于0减最后一个数)
差分一般使用场景:
给出 n 个数,再给出 m 个询问,每个询问给出 l,r,x,要求你在 l 到 r 上每一个值都加上 x,而只给你 O(n) 的时间范围,怎么办?
如果暴力,时间复杂度就是 O(n^2)
如果线段树或者树状数组,时间复杂度就是 O(mlogn)
所以这里用差分,时间复杂度就是 O(n)
具体操作:
先另外开一个专门差分的数组
假如在 3~8 的区间上加上 5,那我们在差分数组中的 3 位置上加上一个 5 (原因暂时不懂没关系,用笔先跟着模拟),再在8+1的位置上减一个5,如此操作完 m 次
接着运用公式 a[i]=a[i]+a[i−1]a[i] = a[i] + a[i-1]a[i]=a[i]+a[i−1] 遍历一遍数组。那么你会发现在 3~8 的区间上,你已经使差分数组全部加上了 5 。
来几道例题练练手
代码就自己去操作吧,多练才会!
再来一道经典例题,专门卡时间,只能差分或者线段树或者树状数组才能过
经典例题:部落外的树
题解:https://blog.csdn.net/weixin_44668898/article/details/100751973
【总结】差分原理详解(通俗易懂)相关推荐
- Vondrak滤波原理详解及Matlab实现
Vondrak滤波原理详解及Matlab实现 一.Vondrak基本思想: 二.Vondrak平滑法的原理: 三.Vondrak滤波平滑公式: 四.Vondrak滤波应用 五.Matlab实现 一.V ...
- Android面试Hash原理详解二
Hash系列目录 Android面试Hash原理详解一 Android面试Hash原理详解二 Android面试Hash常见算法 Android面试Hash算法案例 Android面试Hash原理详解 ...
- 【夯实Spring Cloud】Spring Cloud中使用Hystrix实现断路器原理详解(上)
本文属于[夯实Spring Cloud]系列文章,该系列旨在用通俗易懂的语言,带大家了解和学习Spring Cloud技术,希望能给读者带来一些干货.系列目录如下: [夯实Spring Cloud]D ...
- AI 以 5:0 比分击败美顶级飞行员;经典对抗攻击 Deepfool 原理详解
开发者社区技术周刊又和大家见面了,快来看看这周有哪些值得我们开发者关注的重要新闻吧. 2019 年全球公共云服务市场总额达 2334 亿美元 新里程碑!IBM 宣布最高量子体积 64 马斯克将通过实时 ...
- 机器学习,深度学习基础算法原理详解(图的搜索、交叉验证、PAC框架、VC-维(持续更新))
机器学习,深度学习基础算法原理详解(图的搜索.交叉验证.PAC框架.VC-维.支持向量机.核方法(持续更新)) 机器学习,深度学习基础算法原理详解(数据结构部分(持续更新)) 文章目录 1. 图的搜索 ...
- mysql udf提权原理_udf提权原理详解
0x00-前言 这个udf提权复现搞了三天,终于搞出来了.网上的教程对于初学者不太友好,以至于我一直迷迷糊糊的,走了不少弯路.下面就来总结一下我的理解. 想要知道udf提权是怎么回事,首先要先知道ud ...
- RFM模型原理详解与实操运用
RFM模型原理详解与实操运用 RFM模型原理介绍 为什么要使用RFM模型 RMF模型原理介绍 RFM模型用户细分 RFM模型实例操作 背景/数据介绍 RFM模型异化构建 代码实现 最近在 运营课程中学 ...
- 『ML笔记』HOG特征提取原理详解+代码
HOG特征提取原理详解+代码! 文章目录 一. HOG特征介绍 二. HOG算法具体流程+代码 2.1. 图像灰度化和gamma矫正 2.2. 计算图像像素梯度图 2.3. 在8×8的网格中计算梯度直 ...
- Catboost原理详解
目录 一 主要特点: 1 类别变量编码-Order Target Statistics方法 2 文本型变量编码处理 3 类别型特征交叉-FM 4 无偏提升-Ordered Boosting 5 使用对 ...
最新文章
- sap abap在表VBAP和VBAK上增加新字段的标准BAPI
- unet脑肿瘤分割_2D UNet3+ Pytorch实现 脑肿瘤分割
- 【laravel】【转发】laravel 导入导出excel文档
- 如何使用动态工具提示构建React Native图表
- 连接linux系统的mysql,Linux系统MySQL开启远程连接
- Android 6.0 动态权限申请注意事项
- linux edi esi eax 汇编指令,汇编指令lodsb和stosb、lodsd和stosd
- CF991A If at first you don't succeed...
- rx584白牌救砖心得
- 打印机共享与文件夹win10共享教程
- 战神服务器IP修改,战神引擎芒果数据库查询和修改玩家IP+账号+密码教程
- Linux文件管理器默认不显示隐藏文件
- 【土旦】 使用Vant 的Uploader 上传图片 重定义返回格式 使用FormData格式提交
- MFC获取菜单、修改菜单文字
- 《研磨设计模式》 与 《设计模式之禅》对比
- 淘宝直播窄带高清技术
- Pygame详解(二):display 模块
- FasterMoE:Modeling and Optimizing Training of Large-Scale Dynamic Pre-Trained Models阅读笔记
- vb/vb.net原创文章精粹(4)
- 如何在Lattice CPLD XO2系列器件中执行TransFR(透明传输)操作?
热门文章
- Spring boot 全面学习笔记(1)
- 机器学习框架_编写生产级机器学习框架的经验教训
- 0.9元实名撸七牛1核1G云服务器
- tombstone问题追踪与分析
- websocket实现仿微信聊天功能
- Kaggle简单实战
- iPhone/iPad安装包的三种格式 deb、ipa 和 pxl的解释和说明
- Linux 的基本使用(上)· 背景故事 · 环境搭建 · 常用命令 vim less cp mv等(基本能覆盖 Linux 日常使用80%场景)· Linux 文件结构的意义 · 相对路径和绝对路径
- android 健身,Android静态自行车 把健身房体验带回家
- html5中audio标签