bzoj3595 方伯伯的oj
有$n$个数,一开始是$1~n$,有$m$次操作
1.把编号为$x$的人编号改为$y$,保证$y$没出现过
2.把编号为$x$的人提到第一名
3.把编号为$x$的人怼到最后一名
4.查询排名为$x$的人的编号
初始每个人的排名 = 他的编号
sol:
考虑线段树,在叶子维护一个值$v$表示这个点上的编号是多少
全局维护两个变量lv,rv表示当前编号最小的是lv,最大的是rv
这样23操作就可以用lv和rv维护了
1操作就是两个单点修改
4操作就是查询当前有人的第k个叶子
可以维护一个size来搞
最后 我们保存每个人在线段树中的位置时要用map