树链剖分 + 非旋 treap.
考虑树剖,维护每条重链信息时,由于线段树无法支持翻转操作,把它换成非旋 treap .
给每个重链开一棵非旋 treap ,以深度作为下标.
前面四种操作可以直接做,对于翻转操作,可以把操作到的所有点合成一个 treap ,打完标记后再放回去.
修改操作保证了起点和终点有祖先后代关系,处理起来就简单一些了.
1 | //%std |
夢はここに 思い出は遠くに
树链剖分 + 非旋 treap.
考虑树剖,维护每条重链信息时,由于线段树无法支持翻转操作,把它换成非旋 treap .
给每个重链开一棵非旋 treap ,以深度作为下标.
前面四种操作可以直接做,对于翻转操作,可以把操作到的所有点合成一个 treap ,打完标记后再放回去.
修改操作保证了起点和终点有祖先后代关系,处理起来就简单一些了.
1 | //%std |