版本树

集训讲可持久化数据结构时提到了一个低空间复杂度的离线做法。

版本树

一般可持久化数据结构的题可以抽象成这样的形式:

  • 查询
  • 修改并作为新版本
  • 回退到某个版本

假设版本 \(j\) 从版本 \(i\) 修改而来,就从 \(i\)\(j\) 连有向边,容易发现这构成一个树。

如果我们能提前知道询问序列,这个树结构在最开始是已知的。

我们在树上 DFS,进入某个子树时执行修改,退出时撤销修改。第一次到达某个节点时可以处理这个版本下的所有询问。

由树上 DFS 的性质,我们发现这个方法的时间复杂度和空间复杂度都不变。

posted @ 2024-07-26 17:26  weilycoder  阅读(99)  评论(0)    收藏  举报