摘要: 对于我这样一名脑残ACMer选手,这道题看了好久好久大概4天,终于知道怎样把它和“树状数组”联系到一块了。树状数组是什么意思呢?用十个字归纳它:心里有数组,手中有前缀。为什么要用树状数组?假设你要储存一段数字的前缀和,还要动态修改这些数字。怎么办?通常的想法就是用数组a[]保存所有的数字,再用数组s[]保存每一位上的前缀和。1 for(int i=1;i=0)。令C[x]=A[x-lowbit(x)+1]+A[x-lowbit(x)+2]+...+A[x],那么每个C[x]都会对应一部分它的lowbit(x)范围内的A[i]。假如我要求x的前缀和,只要先取出C[x],再取出C[x-lowbit 阅读全文
posted @ 2013-09-24 22:03 howardcn 阅读(227) 评论(0) 推荐(0) 编辑