1.改点(+/-)求区间
void add(int x,int v)
{
for(;x<=n;x+=x&(-x))
C[x]+=v;
}
void sub(int x,int v)
{
for(;x<=n;x+=x&(-x))
C[x]-=v;
}
int getsum(int x)//求1-x的和
{
int sum=0;
for(;x>0;x-=x&(-x))
sum+=C[x];
return sum;
}
2.求比某点x小的点的个数
对于x,求getsum(x),再加入x:add(x,1);
同理可求逆序(倒着插),求平面上在点A左下方的点的个数
3.改区间求点
令del[i]表示i..MN段被加了多少。则区间修改[a,b]时,我们让del[a]++,del[b+1]--即可。(此时树状数组是建立在del数组基础上的)这个时候,要求某一个位置x的数的值时,用Getsum(x)来表示。