什么是差分?

差分就是将数列中的每一项分别与前一项数做差。

首先一个数组 :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

【总结】差分原理详解(通俗易懂)相关推荐

  1. Vondrak滤波原理详解及Matlab实现

    Vondrak滤波原理详解及Matlab实现 一.Vondrak基本思想: 二.Vondrak平滑法的原理: 三.Vondrak滤波平滑公式: 四.Vondrak滤波应用 五.Matlab实现 一.V ...

  2. Android面试Hash原理详解二

    Hash系列目录 Android面试Hash原理详解一 Android面试Hash原理详解二 Android面试Hash常见算法 Android面试Hash算法案例 Android面试Hash原理详解 ...

  3. 【夯实Spring Cloud】Spring Cloud中使用Hystrix实现断路器原理详解(上)

    本文属于[夯实Spring Cloud]系列文章,该系列旨在用通俗易懂的语言,带大家了解和学习Spring Cloud技术,希望能给读者带来一些干货.系列目录如下: [夯实Spring Cloud]D ...

  4. AI 以 5:0 比分击败美顶级飞行员;经典对抗攻击 Deepfool 原理详解

    开发者社区技术周刊又和大家见面了,快来看看这周有哪些值得我们开发者关注的重要新闻吧. 2019 年全球公共云服务市场总额达 2334 亿美元 新里程碑!IBM 宣布最高量子体积 64 马斯克将通过实时 ...

  5. 机器学习,深度学习基础算法原理详解(图的搜索、交叉验证、PAC框架、VC-维(持续更新))

    机器学习,深度学习基础算法原理详解(图的搜索.交叉验证.PAC框架.VC-维.支持向量机.核方法(持续更新)) 机器学习,深度学习基础算法原理详解(数据结构部分(持续更新)) 文章目录 1. 图的搜索 ...

  6. mysql udf提权原理_udf提权原理详解

    0x00-前言 这个udf提权复现搞了三天,终于搞出来了.网上的教程对于初学者不太友好,以至于我一直迷迷糊糊的,走了不少弯路.下面就来总结一下我的理解. 想要知道udf提权是怎么回事,首先要先知道ud ...

  7. RFM模型原理详解与实操运用

    RFM模型原理详解与实操运用 RFM模型原理介绍 为什么要使用RFM模型 RMF模型原理介绍 RFM模型用户细分 RFM模型实例操作 背景/数据介绍 RFM模型异化构建 代码实现 最近在 运营课程中学 ...

  8. 『ML笔记』HOG特征提取原理详解+代码

    HOG特征提取原理详解+代码! 文章目录 一. HOG特征介绍 二. HOG算法具体流程+代码 2.1. 图像灰度化和gamma矫正 2.2. 计算图像像素梯度图 2.3. 在8×8的网格中计算梯度直 ...

  9. Catboost原理详解

    目录 一 主要特点: 1 类别变量编码-Order Target Statistics方法 2 文本型变量编码处理 3 类别型特征交叉-FM 4 无偏提升-Ordered Boosting 5 使用对 ...

最新文章

  1. sap abap在表VBAP和VBAK上增加新字段的标准BAPI
  2. unet脑肿瘤分割_2D UNet3+ Pytorch实现 脑肿瘤分割
  3. 【laravel】【转发】laravel 导入导出excel文档
  4. 如何使用动态工具提示构建React Native图表
  5. 连接linux系统的mysql,Linux系统MySQL开启远程连接
  6. Android 6.0 动态权限申请注意事项
  7. linux edi esi eax 汇编指令,汇编指令lodsb和stosb、lodsd和stosd
  8. CF991A If at first you don't succeed...
  9. rx584白牌救砖心得
  10. 打印机共享与文件夹win10共享教程
  11. 战神服务器IP修改,战神引擎芒果数据库查询和修改玩家IP+账号+密码教程
  12. Linux文件管理器默认不显示隐藏文件
  13. 【土旦】 使用Vant 的Uploader 上传图片 重定义返回格式 使用FormData格式提交
  14. MFC获取菜单、修改菜单文字
  15. 《研磨设计模式》 与 《设计模式之禅》对比
  16. 淘宝直播窄带高清技术
  17. Pygame详解(二):display 模块
  18. FasterMoE:Modeling and Optimizing Training of Large-Scale Dynamic Pre-Trained Models阅读笔记
  19. vb/vb.net原创文章精粹(4)
  20. 如何在Lattice CPLD XO2系列器件中执行TransFR(透明传输)操作?

热门文章

  1. Spring boot 全面学习笔记(1)
  2. 机器学习框架_编写生产级机器学习框架的经验教训
  3. 0.9元实名撸七牛1核1G云服务器
  4. tombstone问题追踪与分析
  5. websocket实现仿微信聊天功能
  6. Kaggle简单实战
  7. iPhone/iPad安装包的三种格式 deb、ipa 和 pxl的解释和说明
  8. Linux 的基本使用(上)· 背景故事 · 环境搭建 · 常用命令 vim less cp mv等(基本能覆盖 Linux 日常使用80%场景)· Linux 文件结构的意义 · 相对路径和绝对路径
  9. android 健身,Android静态自行车 把健身房体验带回家
  10. html5中audio标签