别的不说,谁让你开八倍空间了
两倍空间就可以,这是动态开点的优势
by Masna_Kimoyo @ 2024-01-02 23:26:21
这 build 给我看懵了。
by cmaths @ 2024-01-03 07:08:23
@[cmaths](/user/300098) +1
by Bingxiu @ 2024-01-03 07:08:56
@[tianyu_awa](/user/716260) 你家 `build` 是一个一个节点加的(抽象)
by Bingxiu @ 2024-01-03 07:09:53
似乎看起来没什么问题???
by Bingxiu @ 2024-01-03 07:15:06
@[tianyu_awa](/user/716260) ?样例哪里不对了,我测了一下没问题啊
by Bingxiu @ 2024-01-03 07:16:42
好像也没问题,毕竟是动开线段树,不过为什么不直接用 add
by cmaths @ 2024-01-03 07:20:21
@[tianyu_awa](/user/716260) 虽然我是蒟蒻,但是我认为整个程序中只build建树一次就可以了
```
void builded (int u, int l, int r)
{
int x = u << 1, y = u << 1 | 1;
tr[u].l = l, tr[u].r = r;
if(l == r)
{
tr[u].he = a[l];
return;
}
int mid = (l + r) >> 1;
builded(x, l, mid);
builded(y, mid + 1, r);
tr[u].he = tr[x].he + tr[y].he; //he 从tr[u].l到tr[u].r整个区间的和
return;
}
```
这样写的话,只需要在询问前建树一次(build(1, 1, n))
by 2Bxzj @ 2024-01-03 10:15:14
@[Bingxiu](/user/676498) ?
by tianyu_awa @ 2024-01-03 16:28:39
@[Bingxiu](/user/676498) 好吧是我看错了
by tianyu_awa @ 2024-01-03 16:31:19