Splay类封装究极玄学现象,求解答

P3391 【模板】文艺平衡树

@[MichaelWong](/user/765446) 事实上我用了您 WA 后三个点的写法交了一发过了
by __er @ 2023-05-11 19:39:00


怀疑过是赋初值,在构造函数里加了 `memset(val,0,sizeof val)` 还是不行,但是给 `val[N]` 的声明换个位置就对了 之前还交过一个对的,把 `init` 函数里的 `ch[p][0]=ch[p][1]=0` 改成 `ch[p][0]=ch[p][1]` 就对了 现在 C++ 这么玄学了吗???
by MichaelWong @ 2023-05-11 19:40:19


@[__er](/user/713955) 啊,可是我交了三次都没对?好玄学
by MichaelWong @ 2023-05-11 19:41:08


越界了吧
by Tibrella @ 2023-05-11 19:41:42


@[Tibrella](/user/655192) 把 `1e5+5` 改成 `2e5+7`,过了 感谢!但是,为什么会越界呢?又为什么没有 RE 呢?
by MichaelWong @ 2023-05-11 19:44:11


@[MichaelWong](/user/765446) 把你的范围改成了1.01e5 T了。
by catandcode @ 2023-05-11 19:46:36


@[catandcode](/user/767681) ![](//图.tk/7)![](//图.tk/7)![](//图.tk/7)
by MichaelWong @ 2023-05-11 19:46:56


@[MichaelWong](/user/765446) 因为数组相当于指针,访问 `f[n]` 就相当于访问 `*(f+n)`,而 C++ 对数组越界检查并不严格...如果那个地址正好存着一个数字,就能够返回一个正常的值,结果就不会报 RE。 另外,C++ 的一切未定义行为都没有准确的结果,出现什么问题都看 RP(
by Tibrella @ 2023-05-11 19:53:34


@[MichaelWong](/user/765446) 至于为什么越界,我不会 splay(
by Tibrella @ 2023-05-11 19:54:04


@[Tibrella](/user/655192) 嗷嗷彳亍()跪谢 $dalao$ QAQ
by MichaelWong @ 2023-05-11 19:54:52


|