周末训练笔记

本文介绍了树状数组的基本概念,包括其在求区间和等问题上的应用优势,并解释了原码、反码、补码等概念。此外,还给出了树状数组中求起点下标的公式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于当时家里有点事回家了,树状数组也没大看,本周又学习了一下树状数组。

看树状数组的时候看到起点的时候看课件的时候有点懵逼,当时不明白括号后面的2是什么意思就没管,然后又补了一波原码,反码,补码的知识。

原码:就是直接将十进制数转换为二进制数形式。
反码:正整数原码的反码是其自身,负整数原码的反码则是对原码真值域的个位数取反即可。
补码:正整数原码的补码是其自身,负整数原码的补码则是对原码真值域的个位数取反后,整体+1即可。

起点下标求法:lowbit(x)=x&((~x)+1)

树状数组的作用:树状数组一般用来修改某一点的值,求某个区间的和,数据规模不大的时候,对于修改某点的值是非常容易的,复杂度是O(1),但是对于求一个区间的和就要扫一遍了,复杂度是O(N),如果实时的对数组进行M次修改或求和,最坏的情况下复杂度是O(M*N),而树状数组干同样的事复杂度却是O(M*lgN),所以用树状数组可以进行优化,使代码更加简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值