【菜鸡求助玄学】为什么虚点设为n+1,就90分,设为0,就100分

P2597 [ZJOI2012] 灾难

相关帖子 [Mn Zn 求助 qwq ](https://www.luogu.com.cn/discuss/show/301264) [90分。。。第5个点wa ](https://www.luogu.com.cn/discuss/show/160462) [请问这道题90分什么鬼啊 ](https://www.luogu.com.cn/discuss/show/113777) [没人救我吗 ](https://www.luogu.com.cn/discuss/show/113792)
by _Felix @ 2021-07-09 09:49:55


@[_Felix](/user/106738) 把你 90 分代码的 $f[][]$ 全改成 $n+1$ 就过了(
by xzggzh1 @ 2021-07-09 10:05:28


有无代码 ![](//xn--9zr.tk/xk)
by Leap_Frog @ 2021-07-09 10:13:52


@[xzggzh1](/user/288460) 这是啥原因啊
by _Felix @ 2021-07-09 10:20:27


这个跳lca的时候会有锅吗?
by _Felix @ 2021-07-09 10:23:05


同問
by wangzeyuanwangzeyuan @ 2021-08-06 20:39:28


插眼,有大佬回答了请at我
by wbt0910 @ 2021-08-24 20:39:22


@[_Felix](/user/106738) 啊我也是这个问题,不过后来改对后仔细想了一下原因,结果我找到了(您可以看看会不会是这个问题?):把虚点 $n+1$的深度从 $0$改为 $1$,就可以了。回想一下倍增 $LCA$的过程,在找的时候可能跳得太远,到了一个根本没有的祖先,大多数人应该都是直接不管让它为 $0$。这里的问题在于,默认 $deep_0=0$,而 $LCA$的上跳条件是 $deep_x\le deep_{up}$,所以如果在查询虚点与某个点的 $LCA$时,由于虚点深度为 $0$,一旦跳远到了 $0$,$deep_0=deep_{n+1}$,就会一直在 $0$打转,最后算出来 $LCA$就成了 $0$而不是 $n+1$。所以这里动一下小手脚就行啦O(∩_∩)O
by 小毓 @ 2021-08-26 12:18:12


@[wbt0910](/user/60221) 您可能也是?
by 小毓 @ 2021-08-27 16:26:53


@[小毓](/user/513404) 是哒,太感谢啦QAQ
by wbt0910 @ 2021-08-27 17:22:24


| 下一页