树状数组

放一个简单的板子记录一下

int tr[N];
int a[N];
int n;
 
int lowbit(int x)
{
	return x&(-x);
} 

void add(int x,int c)  //x的位置+c
{
	for(int i=x;i<=n;i+=lowbit(i))
	tr[i]+=c;
	 
} 

int sum(int x)//1~x的和
{
	int res=0;
	for(int i=x;i;i-=lowbit(i))
	{
		res+=tr[i];
	}
	return res;
}
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页