萌新刚学Splay,但用的是fhqTreap 求助

P1486 [NOI2004] 郁闷的出纳员

@[danielqf](/user/378555) `if (k > val[node])`改为 `if (k >=val[node])`
by Terrible @ 2022-04-05 23:06:38


@[Terrible](/user/195942) %%% 已关注,能讲一下为什么吗? 谢谢
by danielqf @ 2022-04-06 20:12:45


@[danielqf](/user/378555) 你最初的代码实现的 `split(node,k,&x,&y)` 是把树分成 $(-\infty,k)$ 和 $[k,+\infty)$,而后面的 `split(root, min - 1, a, root)`,需要的是能分成 $(-\infty,k]$ 和 $(k,+\infty)$ 的操作,如果你把`split(root, min - 1, a, root)`改成`split(root, min , a, root)`,也是对的。只是波操作不配套了。 你需要明白你实现的函数的作用的结果是什么,边界情况也不能疏忽。 另外,insert操作对两种分裂方式没有太多要求。
by Terrible @ 2022-04-06 20:42:59


|