当前位置: 首页 > news >正文

前缀和+差分

前提提要:这两种算法都不用背,重点是理解,等题目需要时,自己画图解决!

注意不管是前缀和还是差分 我们一定要数组下标从1开始!

前缀和(分成一维和二维)

作用:求一段序列的和

一维前缀和:

题目原先数组a[N];

创建一个数组发前缀和数组f[N],利用for循环+递归 f[i]=f[i-1]+a[i];

假如题目要我们求[L,R]之间的和,我们可以用 sum=f[R]-f[L-1];

二位前缀和:

题目原先数组a[N][N];

第一步预处理:f[i][j]=f[i-1][j]+f[i][j-1]-f[i-1][j-1]+a[i-1][j-1];

第二步求[x1,y1]到[x2,y2]之间的前缀和,即sum=f[x2][y2]-f[x2][y1-1]-f[x1-1][y2]+f[x1-1][y1-1];

差分(分一维和二维)

作用:对一段序列进行加x

一维差分:

有两种常用表达形式:

第一种:题目原先数组a[N],创建差分数组f[N],我们可以for循环 f[i]=a[i]-a[i-1];

对于题目要求改变的序列[L,R],我们f[L]+=x,f[R-1]-=x;

然后还原原先序列 for循环 a[i]=a[i-1]+f[i] 输出即可得到新序列

第二种:根据性质来创建差分序列

for循环 我们直接输入一个t 再加上这两个表达式 f[i]+=t,f[i+1]-=t;

对于题目要求改变的序列[L,R],我们f[L]+=x,f[R-1]-=x;

然后还原原先序列 for循环+前缀和还原 f[i]+=f[i-1];

一边常用第二种 因为可以少创建一个数组

二维差分:

我们对于[x1,y1]到[x2,y2]这个区间同时加x;

说明insert函数:f[x1][y1]+=x,f[x1][y2+1]-=x,f[x2+1][y1]-=x,f[x2+1][y2+1]+=x;

第一步:预处理 依次对二维数组cin>>t 我们就可以两个for循环 insert(i,j,i,j,t)

第二步:改变 insert(x1,y1,x2,y2,x);

第三步还原:用前缀和 sum=f[x2][y2]-f[x2][y1-1]-f[x1-1][y2]+f[x1-1][y1-1];

http://www.jsqmd.com/news/100610/

相关文章:

  • 负载均衡的概念、分类、算法、健康检查机制及高可用解决方案
  • 【环境监测数据同化实战指南】:掌握R语言高效融合多源观测数据的核心技术
  • LobeChat能否实现AI篆刻家?印章字体设计与文化内涵解析
  • 为什么你的临床模型总出错?可能是R语言缺失值处理没做好(附诊断清单)
  • 为什么90%的科研新人做不好表观遗传分析?,R语言实操避坑清单大公开
  • LobeChat能否支持离线运行?无网络环境可用性验证
  • R语言在环境监测中的应用(趋势检验全攻略):从入门到项目落地
  • 谁才是气象预测王者?,R环境下ARIMA、GLM、Random Forest等5模型PK结果揭晓
  • gandalf 甘道夫ai靶场 wp
  • 【翻译】内存控制器中的重排序_苹果专利
  • 部署Dify 1.7.0前必须掌握的5个降噪调优技巧(工程师私藏手册)
  • 9 个专科生答辩PPT模板,AI工具推荐降重查重率
  • 数据结构中括号匹配的问题
  • Dify Tesseract 更新为何如此高效?解密其背后鲜为人知的差分同步算法
  • Dify并行任务调度原理剖析(从入门到精通的4个阶段)
  • 【稀缺资源】临床数据亚组分析核心算法(R代码+案例数据免费送)
  • (Docker MCP服务注册性能优化秘籍):亿级请求下的稳定注册实践
  • 【Dify缓存机制深度解析】:视频字幕检索性能提升的5大关键周期配置
  • 2025年十大高口碑交互数字人推荐榜单,实现智能互动新体验
  • 静态综合实验
  • 基于改进粒子群算法的配电网重构改进探索
  • 数据库服务器挂载新硬盘全流程端到端运营,实操指引
  • 【Dify与Spring AI兼容性深度解析】:掌握版本匹配的5大核心原则
  • 10 个降AI率工具,研究生高效避坑指南
  • 年度精选:数字人公司推荐,帮你提升企业效率的最佳选择
  • 生物信息学高手进阶之路(R语言RNA分析全解析)
  • 从零搭建智能工作流,手把手教你玩转Dify可视化编辑器
  • LobeChat能否实现AI健身教练?运动计划定制与指导
  • 【华尔街都在用的风险对冲方法】:基于R语言的GARCH模型实战解析
  • 如何用Dify实现毫秒级并行响应?一线架构师亲授调优秘方