#include<bits/stdc++.h>
using namespace std;
#define ll long long
int a[100],c[100];//对应原数组和树状数组
int lowbit(int x)//2^k
{
return x&-x;
}
void update(int x,int k)//单点更新 在i位置加上k
{
while(x<200200)
{
c[x]+=k;
x+=lowbit(x);
}
}
void Update(int x,int y,int k)//区间更新 在【x,y】加上k
{
update(x,k);
update(y+1,-k);
}
int sum(int x)//求数组1-x的和
{
int s=0;
while(x)
{
s+=c[x];
x-=lowbit(x);
}
return s;
}
树状数组
最新推荐文章于 2024-07-02 22:40:02 发布