1 条题解

  • 0
    @ 2022-8-9 8:32:32

    边权树的路径xor可以通过树上前缀和变成点权树的两点xor 我们可以发现问题即找出一个点i使得i子树内选两个点的xor加上i的子树外选两个点的xor最大 发现每个点的子树外选两个点最大xor和是可以用上一个题的做法O(nlogn)算出来的,问题在于子树内如果需要计算每个点的答案的话是O(nlog^2n)的 先把每个点子树外的答案算出来,即为f[i] 还是找出全局最大的x xor y 1.x和y都在i子树内,这种情况i一定是lca(x,y)的祖先,求这条路径上最大的f[i]即可 image 3.x在子树内y在子树外,以及对称的情况 这种情况我们从x扫到lca(x,y)算一遍子树内最大xor和,从y扫到lca(x,y)算一遍子树内最大xor和即可 这里插入次数也是O(n)的

    总时间复杂度O(nlogn)

    • 1

    信息

    ID
    4842
    时间
    1000~3500ms
    内存
    245MiB
    难度
    6
    标签
    递交数
    0
    已通过
    0
    上传者