树状数组笔记

数组、前缀和、树状数组的区别:

        数组:修改某点O(1),求区间O(n)

        前缀和:修改某点O(n),求区间O(1)

        树状数组:修改某点O(logn),求区间O(logn)

树状数组采取折中的方式,降低整体的时间复杂度。

由于算法复杂度取决于最坏的情况的复杂度,所以当数据量很大的时候,树状数组比单独的数组或者前缀和快。


基于二进制

C[x] 为以 x 结尾的,2^k 个单位长度的总和(k为x右侧 0 的个数)

例,x = 8(1000),则 k 为 3,C[x] 为2^3 = 8 个单位长度的总和


lowbit函数:求某二进制从右侧往左侧数,第一个1及其后面的0组成的数

int lowbit(int x){
    return x&(-x);
}

 修改某点

int add(int x,int k){	//x为修改的点,k为增加或减少的值 
	for(int i=x;i<=n;i+=lowbit(i)) a[i]+=k;
}

 查询区间 [a,b] 的和

int sum(int x,int y){
	int ans=0;
	for(int i=y;i;i-=lowbit(i)) ans+=a[i];
	for(int i=x-1;i;i-=lowbit(i)) ans-=a[i];
	return ans;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React Dva项目中.roadhogrc.mock.js直接自动导入mock目录下所有文件方式

上文 React Dva项目中模仿网络请求数据方法 中&#xff0c;我们书写了Dva项目模拟后端数据的方式 但是 我们.roadhogrc.mock.js中的这个处理其实并不好用 我们还需要一个一个的引入 我们可以直接靠一段代码 import fs from fs; import path from path; const mock {} fs.re…

Git 快速入门

在客户端操作之前&#xff0c;需要安装git&#xff0c;可以查看连接→→git的下载安装 一、客户端操作 1.1 界面说明 这边有三个选项&#xff1a; Clone a repository from the Internet... 从互联网复制仓库到本地。 由于Git是一个分布式版本控制软件&#xff0c;中央服务…

后处理材质球:黄金螺旋分割线和参考图

后处理材质球&#xff1a;黄金螺旋分割线和参考图 Begin Object Class/Script/UnrealEd.MaterialGraphNode Name"MaterialGraphNode_0"Begin Object Class/Script/Engine.MaterialExpressionLinearInterpolate Name"MaterialExpressionLinearInterpolate_1&qu…

机器学习深度学习——图像分类数据集

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——softmax回归&#xff08;下&#xff09; &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习…

交换机和终端设备的基本配置

1 IOS访问 1.1 操作系统 所有终端设备和网络设备都需要有操作系统 (OS)。如图所示&#xff0c;操作系统中直接与计算机硬件交互的部分称为内核。与应用程序和用户连接的部分则称为外壳。用户可以使用命令行界面 (CLI) 或图形用户界面 (GUI) 与外壳交互。 使用 CLI 时&#xf…

图像处理之Hough变换检测直线

hough变换-直线检测 一、 前言二、Hough 变换三、直线检测四、代码实现1.hough检测2.画直线代码3.画hough空间代码4.检测结果 一、 前言 霍夫变换是一种特征检测(feature extraction)&#xff0c;被广泛应用在图像分析&#xff08;image analysis&#xff09;、计算机视觉(com…

从风控系统看架构设计原型图分析

目录 一、对架构与架构图的理解 &#xff08;一&#xff09;架构的本质 &#xff08;二&#xff09;软件设计中架构域的划分 &#xff08;三&#xff09;架构图设计 架构图设计的必要性 如何画架构图 二、实践业务架构与产品架构设计 &#xff08;一&#xff09;列出问…

Linux Mint 21.2 “Victoria “现已可供下载

Linux Mint 21.2 “Victoria “发行版今天出现在该项目全球稳定镜像上&#xff0c;这意味着开发者将很快发布官方公告&#xff0c;通知想要下载最新Linux Mint版本的用户。 Linux Mint 21.2从2023年6月21日开始进行公开测试&#xff0c;这给了开发者足够的时间来修复剩余的问题…

文心一言 VS 讯飞星火 VS chatgpt (63)-- 算法导论6.5 2题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;63&#xff09;-- 算法导论6.5 2题 二、试说明 MAX-HEAP-INSERT(A&#xff0c;10)在堆A(15&#xff0c;13&#xff0c;9&#xff0c;5&#xff0c;12&#xff0c;8&#xff0c;7&#xff0c;4&#xff0c;0&#xff0c;6&#xf…

从零开始制作婚礼策划展示小程序

随着移动互联网的发展&#xff0c;小程序已经成为各行各业展示和推广自己的重要工具之一。对于婚礼策划行业来说&#xff0c;制作一个专属的婚礼策划展示小程序&#xff0c;不仅能提升服务的专业性和便利性&#xff0c;还能吸引更多的客户。下面将介绍从零开始制作婚礼策划展示…

解决Element-Plus中Swtich @change自动被触发的问题

如图所示 这个switchChange事件在初始化的时候会被自动触发 烦得很 解决方法 如图所示 第471行 通过判断是否还有其它某元素再往下执行 如果你有其它方法 请你在评论区教我下哈 3q

【梦辛工作室】IF判断优化、责任链模式 IfChain

大家好哇&#xff0c;我是梦辛工作室的灵&#xff0c;在最近的开发中&#xff0c;有许多需要判断的分支处理&#xff0c;且处理内容较多且复杂&#xff0c;代码就容易越写越复杂&#xff0c;导致后期无法继续更新跌打&#xff0c;然后基于这个环境&#xff0c;我用责任链模式写…

leetcode 面试题 判定是否互为字符重排

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;判定是否互为字符重排 思路&#xff1a; 两个字符串的每个字母和数量都相等。那么 s2 一定可以排成 s1 字符串。 代码&#xff1a; bool CheckPermutation(char* s1, char* s2){char hash1[26] {0};char hash2[26] {…

【ICCV2023】Scale-Aware Modulation Meet Transformer

Scale-Aware Modulation Meet Transformer, ICCV2023 论文&#xff1a;https://arxiv.org/abs/2307.08579 代码&#xff1a;https://github.com/AFeng-x/SMT 解读&#xff1a;ICCV2023 &#xff5c; 当尺度感知调制遇上Transformer&#xff0c;会碰撞出怎样的火花&#xff1…

三,创建订单微服务消费者 第三章

4.3 修改pom添加依赖 <dependencies><!--web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--监控--><dependency><groupId&g…

Windows安装postgresql时,启动报1053错误

用SQL shell 连接时显示拒绝连接&#xff0c;是因为postgreSql没有启动。 点击“服务”启动却报 1053错误 点击postgreSql服务&#xff0c;选择 登录-》选择本地系统账户&#xff0c;方可启动服务

网络安全 Day19-计算机网络基础知识04(网络协议)

计算机网络基础知识04&#xff08;网络协议&#xff09; 1. ARP1.1 ARP通讯原理1.2 arp欺骗1.3 ARP欺骗与预防1.4 排查ARP病毒 2. DHCP工作原理&#xff08;自动分配内网IP&#xff09;3. TCP协议三次握手、四次挥手原理4. DNS协议工作原理 1. ARP Linux查看arp&#xff1a;ar…

Mysql错误日志、通用查询日志、二进制日志和慢日志的介绍和查看

一.日志 1.日志和备份的必要性 日志刷新 2.mysql的日志类型 &#xff08;1&#xff09;错误日志 查看当前错误日志和是否记录警告设置 &#xff08;2&#xff09;通用查询日志 查看通用查询日志的设置 &#xff08;3&#xff09;二进制日志 查看二进制文件的设置&…

Hadoop 之 Hbase 配置与使用(四)

Hadoop 之 Hbase 配置与使用 一.Hbase 下载1.Hbase 下载 二.Hbase 配置1.单机部署2.伪集群部署&#xff08;基于单机配置&#xff09;3.集群部署1.启动 hadoop 集群2.启动 zookeeper 集群3.启动 hbase 集群4.集群启停脚本 三.测试1.Pom 配置2.Yml 配置3.Hbase 配置类4.Hbase 连…

关于PyTorch中一维卷积Conv1d的理解

首先明确一点&#xff0c;PyTorch中的一维卷积是从左往右做的&#xff0c;不是从上往下。 然后明确第二点&#xff0c;一维卷积和二维卷积最大的区别在于&#xff0c;一维卷积的卷积方向只有一个维度&#xff0c;一维卷积的卷积核不像二维卷积核一样可以左右和上下两个维度移动…