据我理解,splay 每次操作是(均摊) O(logn) 的,而且在每次操作后都会将操作的那个节点旋转到最顶端。
但是我认为这种情况可以把它卡到单次操作 O(n):
加入我们依次插入 1,2,…,n−1,n,那么 splay 就会变成这样:
n
/
n-1
/
...
/
2
/
1
此时我们查询一下 1 的排名,splay 就会变成这样:
1
\
2
\
...
\
n - 1
\
n
显然,由左倾链变成右倾链是 O(n) 的,然后如果我们又查询 n 的排名,splay 又会变成原样:
n
/
n-1
/
...
/
2
/
1
如果我们一直这样 1,n,1,n,… 地查询,那么 splay 是不是就被卡成 O(n2) 的了吗?
蒟蒻刚学 OI 一天,勿喷。
蒟蒻想知道,本人的理解错在哪了。