【问题标题】:for a given path between node u-v in tree find maximum XOR with any node in that path对于树中节点 u-v 之间的给定路径,找到与该路径中任何节点的最大异或
【发布时间】:2017-08-02 03:12:45
【问题描述】:

对于给定的一棵树,有特定的1<=q<=10^5 查询。每个查询都有节点uvK。如何找到max(KXORnode),其中node 是位于节点u 和v 之间路径中的任何节点。其中XOR 是按位运算XOR

任何帮助,多次执行查询的最佳方式是什么。

【问题讨论】:

    标签: algorithm tree xor


    【解决方案1】:

    类似于Maximum XOR value faster than just using XOR这个问题。但是在树上查询。此解决方案处于脱机状态。每个查询的答案都是max(getxor(LCA(u, v), u, K), getxor(LCA(u, v), v, K))。执行 dfs。进入节点时将其添加到树中,离开擦除时。在每个节点的 trie 存储级别的节点。然后回答这个查询可以是一个简单的遍历这个 trie。要检查是否有合适的前缀 higer 或等于 level[LCA(u, v)],您应该对节点中的存储数组进行二进制搜索。 算法复杂度为O(log(n) * log(max_node_val))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-01
      • 1970-01-01
      • 2021-12-18
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多