动态连续和查询问题。给定一个n个元素的数组,A1,A2,…An,支持
□ Add(x, d)操作:让Ax自增d;
□ Query(L, R)操作:计算AL,AL+1,AL+2,…R的数据结构
【求和】
int sum(int x)
{
int ret = 0;
while(x>0)
{
ret += C[x];
x -= lowbit(x);
}
return ret;
}
【增加】
void add(int x, int d)
{
while(x<=n)
{
C[x] +=d;
x += lowbit(x);
}
}
【lowbit】
int lowbit(x)
{
return x&-x;
}
【查询】
int query(int L, int R) //L<=R
{
return sum(R) - sum(L);
}
区间问题的求解关键在于“动态维护”。