如果你样例输出 13 or 对分配两倍内存有疑问
查看原帖
如果你样例输出 13 or 对分配两倍内存有疑问
1055410
ThySecret楼主2025/1/22 11:49

将分配内存的函数开成两倍:

inline int* allocate(size_t size)
{
    int *res = topf;
    return topf += size << 1, res;
}

具体原因可以看这个帖子,由于本题的状态转移方程特殊,代码中遍历重儿子时会有 dp[hson[ver]] = dp[ver] + 1, g[hson[ver]] = g[ver] - 1;

其中 g 函数为倒退的,这就会导致访问 g[hson[ver]][0] 时其实在访问 g[ver][-1]。如果不开两倍内存,这就会错误的访问这一块内存,从而导致 WA or RE。

pEAdWTA.png

2025/1/22 11:49
加载中...