欧拉序的小技巧

这里的欧拉序是指 dfs 时开始和结束时将当前节点加进序列里。

上图的欧拉序就是:\(1,2,4,4,3,7,7,3,2,5,5,6,6\)

在欧拉序中,每个点恰好会出现 \(2\) 次,记 \(x\) 第一次出现的位置为 \(dfn_x\)。可以发现 \((dfn_x,dfn_y]\) 中,\(x\)\(y\) 上的链恰好出现奇数次(\(1\) 次),其他点出现偶数次(注意,这里不包括 \(\operatorname{lca}(x,y)\))。

这有什么用吗?通过欧拉序,可以把链上问题转换为区间问题,维护一些出现奇数次的信息,如链上的异或和等。

posted @ 2024-10-19 16:15  louisliang  阅读(6)  评论(0编辑  收藏  举报