csyの宝藏之地
首页项目归档照片墙音乐灵境说说杂谈友链关于
封面

树状数组:单点修改与区间和

写作时间:2026-07-31
# ACM
# 树状数组
# 数据结构

算法理解

lowbit(x) 取下标最低位的 1,树状数组节点保存一段固定长度的和。更新时向上影响所有包含该位置的区间;查询时不断拆掉最低位,组合成前缀和。

  • 复杂度:单点更新、前缀和均 O(log n)。
  • 注意:下标必须从 1 开始;区间和为 sum(r) - sum(l - 1)。

模板代码

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define lowbit(x) (x&(-x))
const int N = 1e5 + 10;
int c[N];  
int getsum(int x)
{
	int ans=0;
	for (int i=x;i>=1;i-=lowbit(i))
	{
		ans+=c[i];
	}
	return ans;
}
void updata(int x,int v)
{
	for (int i=x;i<=N;i+=lowbit(i))
	{
		c[i]+=v;
	}
}
void solve()
{

}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int t=1;
//	cin>>t;
	while(t--)
	{
		solve();
	}
	return 0;
}
avatar

csy

在代码、算法,模拟间穿梭的普通人。

RECOMMENDED

01 Trie:最大异或对

2026-07-31

邻接表

2026-07-31

高精度:加法

2026-07-31

Table of Contents

蜀ICP备2026044007号