HDU 3436 Queue-jumpers (Splaytree)

题意:有n个人,编号分别为1~n,从小到大排成一列,有q次操作。 (n <= 10^8, q <= 10^5)

Top操作:  把编号为x的人拿出来放到最前面。

Query操作: 问编号为x的人现在在第几个。

Rank操作: 问第x个人编号为多少。


思路:把Top操作和Query操作的所有数离散化下,然后把n个人分成一个个区间,比如6个人,离散化编号4, 5的人,则分成区间(1, 3) (4, 4), (5, 5), (6, 6),保存好离散化的人在伸展树节点的下标,然后把区间建成伸展树就可以了。又被一个小细节坑了好久,调了好久,就是把节点放到最前面的时候我是先把它删除,然后在插入到最前面,可是我插入到最前面的时候忘了修改它的父亲导致debug好久才发现。。每个细节都不能出错才行啊。。



你可能感兴趣的:(HDU 3436 Queue-jumpers (Splaytree))