当前位置: 首页 > 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.cnnetsun.cn/news/91107.html

相关文章:

  • Qwen3-VL-8B:轻量级多模态Embedding新选择
  • 本地部署EmotiVoice多音色情感TTS
  • LobeChat能否实现代码注释生成?文档完整性保障工具
  • 12.16 脚本网页 Golang标准库
  • 【LInux】进程程序替换与shell实现:从fork到exec的完整闭环
  • Github 9.6k Star!一款开源的超强大数据可视化神器!
  • 空间转录组+R语言=发刊利器?5个高分论文常用富集策略首次系统披露
  • 逆变器DC-AC拓扑全解析:从基础到专用,实战选型指南
  • 一文讲清楚Spring Bean的生命周期(附详细流程图)
  • 【Dify与Spring AI兼容性深度解析】:掌握版本匹配的5大核心原则
  • LobeChat能否支持引力波探测?宇宙事件捕捉与信号解读
  • 基于Next.js的LobeChat为何成为开发者新宠?
  • LobeChat压力测试报告:每秒可承受多少并发请求?
  • LobeChat能否对接IFTTT?事件驱动型AI助手构建
  • 10 个降AI率工具,研究生高效避坑指南
  • 从0到1构建智能检索系统,Dify结果融合实战全指南
  • 【混合检索优化实战】:Dify响应时间降低50%的三大核心技术揭秘
  • 版本失控怎么办?Dify工作流回滚全攻略,保障系统稳定性
  • 多路径流程设计难题,Dify工作流跳转配置一招搞定
  • 【Dify工作流依赖检查全攻略】:掌握高效排查技巧,避免上线事故
  • 思科网络发现协议CDP基础
  • 思科网络设备密码配置技术基础1
  • 部署Qwen3-VL-30B:多模态大模型实战指南
  • Wan2.2-T2V-A14B部署指南:快速构建高保真视频生成能力
  • 《机器人:智能时代的“钢铁伙伴“》
  • OpenAI gpt-oss-20b 模型部署与优化全指南
  • 《基于RK3588+ToF的环境颜色区域位置识别方案研究》
  • Qwen-Image低显存部署与中文海报生成实战
  • 【Dify Tesseract 运维必修课】:深入理解增量更新与回滚机制的黄金法则
  • 中文文档最完善的AI前端项目?LobeChat当之无愧