今天写一下树状数组的板子
其实这就是一种可以区间修改和计算数字大小的操作
#include<bits/stdc++.h>
using namespace std;
int a[110000];
int tr[110000];
int n;
int lowbit(int x)
{
return x&-x;
} //lowbit函数就是求最后有几个0
void add(int x,int t)
{
for(int i=x; i<=n; i+=lowbit(i)) //开始进行对一个数x进行加t操作,改变前缀和
tr[i]+=t;
}
int query(int x) //求1-x的和
{
int sum=0;
for(int i=x; i>0; i-=lowbit(i))
sum+=tr[i];
return sum;
}
int main()
{
cin>>n;
for(int i=1; i<=n; i++)
cin>>a[i];
for(int i=1; i<=n; i++)
add(i,a[i]); //这是比较重要的一个初始化
}