题面 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文. 分析 第i棵主席树存储dfs序(dfn)为i的节点到根的链上序列,按dfn更新 查询用dfn[x]+dfn[y]-dfn[lca(x,y)]-dfn[fa[lca(x,y)]](指对应的主席树相减 ) 不能直接减去dfn[lca(x,y)]*2,因为lca那个点也算,要少减一次 代码…