版本树
集训讲可持久化数据结构时提到了一个低空间复杂度的离线做法。
版本树
一般可持久化数据结构的题可以抽象成这样的形式:
- 查询
- 修改并作为新版本
- 回退到某个版本
假设版本 \(j\) 从版本 \(i\) 修改而来,就从 \(i\) 向 \(j\) 连有向边,容易发现这构成一个树。
如果我们能提前知道询问序列,这个树结构在最开始是已知的。
我们在树上 DFS,进入某个子树时执行修改,退出时撤销修改。第一次到达某个节点时可以处理这个版本下的所有询问。
由树上 DFS 的性质,我们发现这个方法的时间复杂度和空间复杂度都不变。

浙公网安备 33010602011771号