下面是OI Wiki对树状数组和线段树原理的详解:树状数组线段树动态 DPupd: 线段树非递归的单点写法:(需要维护每个元素所在的叶结点的位置) int mp[N];//a[i]放在哪个叶结点 void build(int u,int l,int r){ tree[u].l=l,tree[u].r=r; if(l==r){ tree[u].v=a[l]; mp[l]=u;/*plus*/ return; } int mid=(l+r)>>1; build(u<<1,l,mid);build(u<<1|1,mid+1,r); pushup(u); } v...