Acwing-基础算法课笔记之基础算法(差分)

Acwing-基础算法课笔记之基础算法(差分)

  • 一、一维差分
    • 1、差分的概念
    • 2、差分思想
  • 二、二维差分
    • 操作流程

一、一维差分

1、差分的概念

对于一个给定的序列a,它的差分序列b定义为:
b [ 1 ] = a [ 1 ] b[1]=a[1] b[1]=a[1] b [ i ] = a [ i ] − a [ i − 1 ] b[i]=a[i]-a[i-1] b[i]=a[i]a[i1] ( 2 ⩽ i ⩽ n ) (2\leqslant i\leqslant n) (2in)
b是a的差分序列,a是b的前缀和序列,差分与前缀和是一对互逆运算
a [ 1 ] = b [ 1 ] a[1]=b[1] a[1]=b[1]
a [ 2 ] = b [ 2 ] + a [ 1 ] = b [ 2 ] + b [ 1 ] a[2]=b[2]+a[1]=b[2]+b[1] a[2]=b[2]+a[1]=b[2]+b[1]
a [ 3 ] = b [ 3 ] + a [ 2 ] = b [ 3 ] + b [ 2 ] + b [ 1 ] a[3]=b[3]+a[2]=b[3]+b[2]+b[1] a[3]=b[3]+a[2]=b[3]+b[2]+b[1],证毕

2、差分思想

把序列a的区间 [ l , r ] [l,r] [l,r]加d,等价于其差分序列b的点 b [ l ] b[l] b[l]加d,点 b [ r + 1 ] b[r+1] b[r+1]减d,其他位置不变。即把原序列的“区间操作”转化为差分序列的“两点操作”。多次区间操作完成后,再利用前缀和还原。时间复杂度从 O ( n 2 ) O(n^2) O(n2)降为 O ( n ) O(n) O(n)
在这里插入图片描述
在这里插入图片描述

二、二维差分

操作流程

(x1,y1)****
*****
*****
****(x2,y2)

b [ x 1 , y 1 ] + = c b[x1,y1]+=c b[x1,y1]+=c:坐标 ( x 1 , y 1 ) (x1,y1) (x1,y1)右下区域的所有数加 c c c
b [ x 2 + 1 , y 1 ] − = c b[x2+1,y1]-=c b[x2+1,y1]=c:坐标 ( x 2 + 1 , y 1 ) (x2+1,y1) (x2+1,y1)右下区域的所有数减 c c c
b [ x 1 , y 2 + 1 ] − = c b[x1,y2+1]-=c b[x1,y2+1]=c:坐标 ( x 1 , y 2 + 1 ) (x1,y2+1) (x1,y2+1)右下区域的所有数减 c c c
b [ x 2 , y 2 ] + = c b[x2,y2]+=c b[x2,y2]+=c:坐标 ( x 2 , y 2 ) (x2,y2) (x2,y2)右下区域的所有数多减了 c c c,所以要全部加 c c c

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

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

相关文章

SkyWalking 10.1.0 实战:从零构建全链路监控,解锁微服务性能优化新境界

文章目录 前言一、集成SkyWalking二、SkyWalking使用三、SkyWalking性能剖析四、SkyWalking 告警推送4.1 配置告警规则4.2 配置告警通知地址4.3 下发告警信息4.4 测试告警4.5 慢SQL查询 总结 前言 在传统监控系统中,我们通过进程监控和日志分析来发现系统问题&…

【动态规划】风扫枯杨,满地堆黄叶 - 9. 完全背包问题

本篇博客给大家带来的是完全背包问题之动态规划解法技巧. 🐎文章专栏: 动态规划 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅🚀 要开心要快乐顺…

MyBatis的工作流程是怎样的?

大家好,我是锋哥。今天分享关于【MyBatis的工作流程是怎样的?】面试题。希望对大家有帮助; MyBatis的工作流程是怎样的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MyBatis 的工作流程可以分为几个主要的步骤&…

python-leetcode 25.环形链表

题目: 给定一个链表的头节点head,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(…

瑞芯微开发板/主板Android调试串口配置为普通串口方法 深圳触觉智能科技分享

本文介绍瑞芯微开发板/主板Android调试串口配置为普通串口方法,不同板型找到对应文件修改,修改的方法相通。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联…

Datawhale 组队学习 Ollama教程 task1

一、Ollama 简介 比喻:Ollama 就像是一个“魔法箱子”,里面装满了各种大型语言模型(LLM)。你不需要懂复杂的魔法咒语(配置),只需要轻轻一按(一条命令),就能让…

错误报告:WebSocket 设备连接断开处理问题

错误报告:WebSocket 设备连接断开处理问题 项目背景 设备通过自启动的客户端连接到服务器,服务器将设备的 mac_address 和设备信息存入 Redis。前端通过 Redis 接口查看设备信息并展示。 问题描述 设备连接到服务器后,前端无法立即看到设…

vscode关闭后如何恢复在远程服务器的终端程序运行界面

网上有很多种解决方案,我觉得比较好用的是screen。这里先介绍screen的安装和使用办法: 通过 conda 安装 screen是比较方便的方式,可以按照以下步骤操作: 通过 Conda 安装 screen 打开终端或命令行工具。确保你已经激活了 Conda 环…

vulnhub 靶场 —— NullByte

免责声明 本博客文章仅供教育和研究目的使用。本文中提到的所有信息和技术均基于公开来源和合法获取的知识。本文不鼓励或支持任何非法活动,包括但不限于未经授权访问计算机系统、网络或数据。 作者对于读者使用本文中的信息所导致的任何直接或间接后果不承担任何…

React 初级教程

一、React 简介 React 是由 Facebook 开发的开源 JavaScript 库,用于构建用户界面(UI)。特点: 声明式编程:通过描述 UI 应该是什么样子(而不是操作 DOM)来构建界面。组件化:将 UI 拆分为独立可复用的组件。跨平台:支持 Web(React)、移动端(React Native)、VR 等。…

使用 meshgrid函数绘制网格点坐标的原理与代码实现

使用 meshgrid 绘制网格点坐标的原理与代码实现 在 MATLAB 中,meshgrid 是一个常用函数,用于生成二维平面网格点的坐标矩阵。本文将详细介绍如何利用 meshgrid 函数生成的矩阵绘制网格点的坐标,并给出具体的代码实现和原理解析。 实现思路 …

git tag的使用方法

1.添加tag git tag 2.添加tag并添加信息 git tag -a -m “your message” 3.查看tag git tag 4.推到远端 git push origin 5.推送所有本地标签到远程仓库 git push origin --tags 6.删除tag git tag -d 7.切换到某一个tag git checkout

【STM32系列】利用MATLAB配合ARM-DSP库设计FIR数字滤波器(保姆级教程)

ps.源码放在最后面 设计IIR数字滤波器可以看这里:利用MATLAB配合ARM-DSP库设计IIR数字滤波器(保姆级教程) 前言 本篇文章将介绍如何利用MATLAB与STM32的ARM-DSP库相结合,简明易懂地实现FIR低通滤波器的设计与应用。文章重点不在…

使用mermaid画流程图

本文介绍使用mermaid画流程图,并给出几个示例。 背景 目前,除有明确格式要求的文档外,笔者一般使用markdown写文档、笔记。当文档有图片时,使用Typora等软件可实时渲染,所见即所得。但如果文档接收方没有安装相关工具…

C# ASP.NET核心特性介绍

.NET学习资料 .NET学习资料 .NET学习资料 在当今的软件开发领域中,C# ASP.NET凭借其强大的功能和丰富的特性,成为构建 Web 应用程序的重要技术之一。以下将详细介绍 C# ASP.NET的核心特性。 多语言支持 ASP.NET 支持多种语言进行开发,这使…

使用Hexo部署NexT主体网站

一.使用git提交文件 参考: 从零开始搭建个人博客(超详细) - 知乎 致谢! 第一种:本地没有 git 仓库 直接将远程仓库 clone 到本地;将文件添加并 commit 到本地仓库;将本地仓库的内容push到远程仓…

12.项目结构

后端结构 ruoyi-admin 项目启动的入口 提供了两种启动方式 1.RuoYiApplication基于springboot,内置tomcat,直接运行。 2.RuoYiServletInitializer将springboot项目打成一个war包,用外置的servlet容器来运行。 通用功能的controller 后台登录相关的、权限控制相关的、数据字…

cursor如何使用到150次以及解决cursor限制问题

cursor白嫖免费版限制问题解决以后经常遇到只使用了50次额度就被限制了,软件提示you reached your trial。 解决方法 使用cursor的老版本,因为老版本有agent和normal可以切换,通过切换通往世界的IP,重启软件或者切换点几次agent和…

mmdetection3d环境部署

安装python库 pip install torch1.9.1cu111 torchvision0.10.1cu111 torchaudio0.9.1 -f https://download.pytorch.org/whl/torch_stable.html pip install mmengine pip install mmcv-2.0.0rc4-cp38-cp38-manylinux1_x86_64.whl pip install mmdet>3.0.0,<3.1.0 cd m…

基于springboot+vue的游戏创意工坊与推广平台的设计与实现

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…