文章目录

  • 1 概述
  • 2 单点查询
  • 3 区间修改
  • 4 例题

1 概述

首先引入差分数组d,设原数组为a,令d[i]=a[i]-a[i-1].由此关系式得

也就是a[j]等于d[j]的前 j 项和,即前缀和。

于此,我们的树状数组维护的是 d 的前缀和。

2 单点查询

有以上推理得,查询a[i]相当于查询d[i]的前缀和,用树状数组操作即可。(注意:树状数组维护的是d数组,不是原数组!)

3 区间修改

因为对a的区间[i,j]加x,就相当于a[i]比a[i-1]大x,a[j+1]比a[j]小x,就相当于对a[i]加x,对a[j+1]减x。

因为a[i]等于d[i]的前缀和,所以a[i]+x就相当于对d[i]的前缀和加x,可以用树状数组操作。

同理,a[j+1]-x等于b[j+1]的前缀和减x,用树状数组操作。

就可以理解为前缀和与差分

python【数据结构与算法】树状数组(附例题)相关推荐

  1. 高级数据结构1—初识树状数组—快速求得前缀和和修改某一元素值

    - 本人的LeetCode账号:魔术师的徒弟,欢迎关注获取每日一题题解,快来一起刷题呀~ 本人Gitee账号:路由器,欢迎关注获取博客内容源码.   树状数组和其他的高级数据结构不同,它非常的好写,同 ...

  2. Hdu 6534 Chika and Friendly Pairs 莫队算法+树状数组

    题目链接 题意求给区间[L,R]中有少对(i,j)满足i<j且abs(a[i]-a[j])<=k. 首先来说暴力的方法就是离散化,然后用树状数组来维护,但是m次询问,m很大,所以说一定会t ...

  3. 快速求区间和的有趣算法——树状数组

    好久没写东西,感觉有写些什么的必要了.(高仿鲁迅) 树状数组虽然听起来名字高大上,但是不是很难(前缀和是名字高大上,却水得像海洋) 树状数组在单纯的查询一个区间的和和修改某一个数的效率要超过线段树哦! ...

  4. 数据结构一【树状数组】普通、二维、离线树状数组的(单点修改,单点查询,区间修改,区间查询)模板及应用例题总结

    文章目录 树状数组 lowbit 线段树与树状数组 单点修改 区间查询 区间修改 区间求和 二维树状数组 离线树状数组 例题 POJ:stars MooFest [SDOI2009]HH的项链 Tur ...

  5. Bzoj3236:[Ahoi2013]作业:莫队算法+树状数组

    题目链接:3236:[Ahoi2013]作业 这题-- 很水的一道莫队,只要用一个树状数组维护数值出现的前缀和就行就行 然而-- 可怜的我真是T得蛋疼了QAQ 先是写了一发裸莫队,T 卧槽T了? 快速 ...

  6. 牛客竞赛数据结构专题班树状数组、线段树练习题

    F.little w and Discretization 题意:找区间[l,r]内离散化后和原来的值不同大小的数的个数 思路:先求区间mex,同时记录区间有多少个数,再 用区间长度减去(区间内小于m ...

  7. 树状数组(未填完的坑)

    Flag:八月底开学前写完!!! 介绍 树状数组(Binary Indexed Tree)其实是一种简单的数据结构,因为简单易懂经常代替线段树来求数列的前缀和.区间和等 原理 很久很久以前,有一个聪明 ...

  8. java 树状数组模板源码

    树状数组是一个查询和修改复杂度都为log(n)的数据结构,将树状数组看成一种数据结构,对于一个数组,如果有多次操作,每次的操作有两种:1.修改数组中某一元素的值,2.求和,求数组元素a[1]+a[2] ...

  9. 【学习笔记+习题集】(树状数组)(9473字)

    目录 板块一:树状数组 引子:lowbit 1.存入数据(单点修改) 2.区间查询 练习1:hdoj1541 3.区间修改和单点查询(差分数组) 练习1:hdoj 1556 练习2:洛谷P3368 4 ...

最新文章

  1. Linux Web服务器网站故障分析常用的命令
  2. Kaldi拜拜!PyTorch语音工具包SpeechBrain要来了,支持多种语音任务,实现最强水准...
  3. golang os.Rename 移动文件 报错 invalid cross-device link 解决方法
  4. mojo 关闭utf8
  5. 如何将python项目部署到服务器_部署python项目到linux服务器
  6. 这几本书在豆瓣 8 分以上,今天中秋节包邮送!
  7. lte盲重定向_LTE重选、切换、重定向的区别
  8. java case 语句_ECMAScript switch 语句
  9. Class create, device create, device create file
  10. nginx事件 -- 第六篇 stale event
  11. 华为发布麒麟 990 芯片;苹果召回部分电源插头转换器;KDevelop 5.4.2 发布​ | 极客头条...
  12. 很久很久之前的一道面试题(老师的生日是那一天?)~
  13. Spring - 理解BeanPostProcessor
  14. Unity飞机大战源码下载
  15. 在win7上跑基于任少卿作者代码修改的RPN+BF实验
  16. matlab 大括号用法,Shell(Bash)小括号和大括号用法及区别
  17. Windows 11 21H2正式版镜像
  18. 64位系统装32位计算机,64位电脑装32位系统,教您64位电脑怎么装32位系统
  19. 添加网站验证,让搜索引擎收录你的网站
  20. SCANV团队预警libsys图书馆系统注入漏洞

热门文章

  1. python turtle 画闹钟
  2. github样式错乱 解决
  3. OpenCV下PCA降维
  4. ubuntu 安装bcompare
  5. 开闭鸿蒙都只为风味情浓,开辟鸿蒙,谁为情种?都只为风月情浓。
  6. android 按钮链接,如何连接到Android中的Power按钮?
  7. xe ftp.config.php,用PHP实现一个高效安全的ftp服务器(一)
  8. echo等追加到文件末尾
  9. Selenium3自动化测试——5. 鼠标悬停操作
  10. python列表不包含哪个内置函数_python 列表的推导器和内置函数