建线段树的时候,我为了偷懒,没有另外开数组记录 dfn 序对应的初始点权。
建树部分是这么写的:
inline void build(int l, int r, int rt)
{
if(l == r)
{
maxn[rt] = sum[rt] = val[dfn[l]];
return ;
}
int mid = l + r >> 1;
build(l, mid, ls);
build(mid + 1, r, rs);
pushup(rt);
}
结果如图:

想请教一下为什么会出现这种情况呢?