有关树剖求助!为什么两份类似的代码,在洛谷IDE上测试,一个会爆内存,一个不会

P3384 【模板】重链剖分/树链剖分

我觉得是递归写假了导致爆栈,而不是数组开太多。
by Raymondzll @ 2021-09-02 17:51:36


```cpp const int maxn=1e+5; ``` 这是啥
by Fan_Tuan @ 2021-09-02 17:53:49


@[Fan_Tuan](/user/371178) 和1e5应该没区别(?
by Raymondzll @ 2021-09-02 17:55:18


```cpp const int maxn=1e+5; ``` 是我打错了,可改了后还是爆内存
by qzilr @ 2021-09-02 18:10:52


@[Raymondzll](/user/225192) 能问一下哪一个递归爆栈了吗?
by qzilr @ 2021-09-02 18:12:13


我发现了原因:\ $1.$ 我测了一下 ```cpp 1e+5=1e5=100000 ``` 但是提交的时候, ```cpp 1e+5 ``` 会 $MLE$ (超过了 $125MB$ ,具体多少我也不知道),\ 但是 ```cpp 1e5+5 ``` 就能过(只花了 $22MB$ 左右)\ $2.build$ 函数中,回溯时,没有更新 ```cpp t[pos].l ``` 和 ```cpp t[pos].r ``` $3.updates$ 和 $getsum$ 函数中的第一个 $if$ 的条件应该是 ```cpp d[top[x]]<d[top[y]] ``` 而不是 ```cpp d[x]<d[y] ``` 应该是这三个错误导致递归时爆栈,我改过之后就 $AC$ 了
by qzilr @ 2021-09-03 00:15:09


准确的说,导致 $MLE$ 的只有第一个原因,后两个导致的是 $RE$ ,可能是我在 $IDE$ 测的数据有些局限,只发现了 $MLE$,并没有发现 $RE$
by qzilr @ 2021-09-03 00:22:54


@[Raymondzll](/user/225192) @[Fan_Tuan](/user/371178) 非常感谢两位 $dalao$ 对我的问题给予解答
by qzilr @ 2021-09-03 00:25:41


凌晨调试的dalao,orz@[qz77](/user/400333)
by Raymondzll @ 2021-09-03 07:08:26


|