求助细节

P4735 最大异或和

是不是last[0]=-1啊
by Keep_RAD @ 2021-06-15 20:35:16


@[achen126](/user/363069) az,是 `last[0]=-1`
by Godzilla @ 2021-06-16 12:01:28


@[Godzilla](/user/147441) 口胡一下: 由于本题的左边界可以取到 0,正解往往都虚设了一个`sum[0]=0`并把它插入可持久 Trie 树,以便边界处理( 即代码中的`Insert(23,0,0,rt[0])` )。 而以`rt[0]`为根的树(设为$t_1$)又是基于真正的零点 0 建立的,由于`sum[0]=0`,导致 $t_1$ 所有以 `1` 为儿子的节点都将指向 0(即代码中的` trie[p2][ar^1]=trie[p1][ar^1]`)。 当 $a_i$ 较小时,其高位基本是 0 ,导致这些以 `1` 为儿子的节点也都将指向 0。 好了,假设我们查询`Q 1 3 x`,也就是在 $[0,2]$范围内找满足条件的数,那你在`query`函数判断时便是`last[]>=0`,如果你`last[0]=0` ,那你在最高位就直接奔向了 0,因为最高位的取反是 1。 所以你所有查询的目标节点都是 0。 ~~设置`last[0]=-1`的原因就是这样,小编也很惊讶,如有不理解的地方欢迎在评论区告诉小编一起讨论哦!~~
by 天泽龟 @ 2021-09-03 15:21:32


|