动态求连续区间和
树状数组是利用lowbit的性质求前缀和
lowbit(x)= 2 k 2^{k} 2k,k的意思是x的二进制表达最后面有几位0
然后c[x]是对 [ x − 2 k , x ] [x-2^{k},x] [x−2k,x]范围内的q求和
然后修改,询问区间和都用到这个性质
#include
#include
#include
#include
#include
#include
数星星
注意增加星星的时候是增加在32000范围内的星星
所以add的范围扩大到32000
然后要注意y是递增输入的
所以可以直接一行一行的增加我们的树状数组
#include
#include
#include
#include
#include
#include
线段树
下面是query中l和r不修改的原因
因为tr[u].l+tr[u].r>>1和区间毫无关系
甚至可能扩大查询区间
比如下面查询[1,3]
就会把3扩大成5
从而查询到45的结果
线段树
#include
#include
#include
#include
#include
#include
lazy标记的线段树
#include
#include
#include
#include
#include
#include
最好把lson和rson封装
真的会写错。。。。
然后注意mid缩小范围只在build中出现
spread要在判断完边界后立刻执行