简单的Splay操作题
Description
描述 县城里有n个用地道相连的房子,第i个只与第i-1和第i+1个相连。这是有m个消息依次传来
1、消息为D x:鬼子将x号房子摧毁了,地道被堵上。
2、消息为R :村民们将鬼子上一个摧毁的房子修复了。
3、消息为Q x:有一名士兵被围堵在x号房子中。
李云龙收到信息很紧张,他想知道每一个被围堵的士兵能够到达的房子有几个。
Samples
Input #1
1 | 7 9 |
Output #1
1 | 1 |
Solution
Splay裸题.
首先对于摧毁操作D x
, 我们把一个val = x
的节点插入Splay
.
这样可以让Q x
操作转化为查询x
的后继 - x
的前趋 + 1.
R
操作就直接用一个栈维护插入的数, 然后把栈顶Remove
掉就完了.
注意: 初始化时应插入0
和n+1
两个节点, 以确保所以点都有前趋和后继
Code
1 | /* Headers */ |