Rindong @ 2024-10-23 16:29:15
以下是我刚学 splay 写这道题遇到的所有坑希望可以帮到你:
数组记得开大,总共是一开始的 1e5 个,再加上可能插入的 1e6 个。
每次修改了树都一定要 splay 一次,为什么?首先 splay 的复杂度是需要 splay 函数保证的,其次,信息发生改变后,其它节点需要更新信息,而 pushup 函数又只在旋转时调用!所以为了保证时间复杂度和正确性,在修改信息后必须 splay。
求排名第 k 个数的时候,计算上当前点的数量时,别忘了添加的是 cnt 变量而不是 1