建树语句
void build(int p, int l, int r)
{
t[p].l = l;
t[p].r = r;
if (l == r)
{
t[p].value = a[l];
return;
}
int mid = l + r >> 1;
build(p * 2, l, mid);
build(p * 2 + 1, mid + 1, r);
t[p].value = t[p * 2].value + t[p * 2 + 1].value
```;
}
正常运行
```c++
long long ask(int p, int x, int y)
{
if (x <= mid)
ans += ask(p*2, x, y);
if (y > mid)
ans += ask(p*2+1, x, y);
}
long long ask(int p, int x, int y)
{
if (x <= mid)
ans += ask(t[p].l, x, y);
if (y > mid)
ans += ask(t[p].r, x, y);
return ans;
}
为什么上面能得出正确答案 而下面却出问题
考虑过是叶节点问题,但叶节点也应该是一样的。数组用的是全局变量,已经初始化。不知道有什么没考虑到的地方