OI基础——前缀和与差分

简介: 前缀和与差分是常用的时间复杂度优秀的线性数据。

前缀和与差分

  • 引入
    如果给你一个数组,让你对于给出的[L,R]区间中的数据加上1,相信这是非常容易实践的,只需要暴力就完全可以解决这个问题。
    但是在算法竞赛中,像这样的暴力做法很可能会导致TLE,导致我们不能拿到全部分数。
    于是我们有了前缀和与差分。
    (本文章中只涉及到一维的前缀和与差分。)

  • 前缀和
    前缀和,顾名思义就是将前缀的数据加到一起。将文字转化为代码会更容易理解。

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

    仔细理解上面三行代码的功能,相信大家都已经理解了。

  • 差分
    前缀和与差分总是结伴出现,这肯定是有原因的。
    如果一个数组a是数组b的前缀和数组,那么数组b就是数组a的差分数组。

    b[i]=a[i]-a[i];
    

    对前缀和数组进行差分操作或者对差分数组进行一个前缀和操作就可以还原出原数组
    当将[L,R]区间上的a数组全部加上x,也就是将b[L]+=x,b[R+1]-=x;(注意此处的R+1。因为b[R]仍是要+x的,所以在b[R+1]才开始-x。)

在实际的算法竞赛中,前缀和与差分数组通常是配合使用的。

目录
相关文章
|
前端开发 JavaScript 搜索推荐
Marp 入门与教程:让你一分钟爱上代码写PPT的乐趣
Marp 是一个基于 Markdown 的开源幻灯片制作工具,可将 Markdown 文档轻松转换为精美幻灯片。支持 VS Code 插件实时预览、命令行工具批量处理、自定义主题等,适用于技术分享、工作汇报和教学等多种场景。相比 LaTeX Beamer,Marp 学习成本低,跨平台支持好,设计现代美观。
|
存储 人工智能 算法
C++基础算法前缀和和差分篇
C++基础算法前缀和和差分篇
466 0
|
机器学习/深度学习 算法 计算机视觉
GitHub开源的ImageAI 库:几行代码可实现目标对象识别
GitHub开源的ImageAI 库:几行代码可实现目标对象识别
GitHub开源的ImageAI 库:几行代码可实现目标对象识别
|
SQL 存储 SpringCloudAlibaba
MySQL 千万数据量深分页优化, 拒绝线上故障!
MySQL 千万数据量深分页优化, 拒绝线上故障!
962 0
MySQL 千万数据量深分页优化, 拒绝线上故障!
|
资源调度 调度
操作系统 信号量机制
操作系统 信号量机制
1282 0
操作系统 信号量机制
|
城市大脑 人工智能 供应链
城市大脑 | 产业大脑解决方案
本文介绍了城市大脑 | 产业大脑解决方案的方案概述,方案价值及优势以及最佳实践。
城市大脑 | 产业大脑解决方案
|
存储 NoSQL 安全
Redisson 分布式锁源码 09:RedLock 红锁的故事
RedLock 红锁,是分布式锁中必须要了解的一个概念。 所以本文会先介绍什么是 RedLock,当大家对 RedLock 有一个基本的了解。然后再看 Redisson 中是如何实现 RedLock 的。
1098 0
|
Web App开发 存储 缓存
前端性能优化系列 | 加载优化(下)
1. 资源加载优先级 在浏览器发起网络请求时,并非每个字节都具有相同的优先级,所以,浏览器通常会对所要加载的内容进行推测,将相对重要的信息先呈现给用户。比如浏览器一般会先加载CSS,再去加载JavaScript脚本和图像文件。当然,浏览器的判断并不一定都是准确的,下面就来看看如何影响浏览器对资源加载的优先级。
919 0
|
机器人 项目管理 开发者
阿里云开发者社区博文发布操作和规则说明
在开发者社区发布博文的几点注意事项。
阿里云开发者社区博文发布操作和规则说明
|
机器学习/深度学习 人工智能 搜索推荐
迁移学习综述与未来展望
迁移学习综述与未来展望
1707 0
迁移学习综述与未来展望

热门文章

最新文章

下一篇
开通oss服务