白天在看树状数组的课件,大概能理解一些,明天再多看几道题。
晚上去照顾奶奶,手边没电脑所以现在才上来写集训日记说明一下情况。
树状数组高效是因为能够利用位运算直接求出i对应的lowbit
int lowbit(int i) //返回i的二进制最右边1的值
{ return i&(-i); }
数据插入:
void update(int I,int data)
{ while(i<=n)
{
c[i]+=data;
i+=lowbit(i);
}
}
然后求和查询:
//返回A[1]+...A[i]的和
int sum(int i)
{ int res=0;
while(i>0)
{
res += c[i];
i -= lowbit(i);
}
return res;
}
太晚了就这些吧。
以上~