如果你用线段树维护区间的最大值和异或和,注意
void update(int p, int l, int r, int x, int k) { if (l == r) { tr[p].sum = mp[k]; tr[p].mx = k; return ; } // ... }
而不是
tr[p].sum = tr[p].mx = mp[k];