参考
本博文又名:手把手教你写树状数组
1. 单点修改,子树和查询
单点修改,区间查询
树状数组
维护每个点的权值:
1. 修改 x (增加
add(x,w);
2. 查询 x 的子树:区间查询——ans=query(le[x])-query(ri[x]-1);
2. 单点修改,树链和查询
首先将
考虑修改点 x ,影响到的即为
至于查询,则是四个单点查询。
线段树
维护每个节点到 root 的权值和:
1. 修改 x (增加
modify(1,le[x],ri[x],w);
2. 查询 [u,v] 链:单点查询——查询 u,v,lca(u,v),fa(