对于树中节点u-v之间的给定路径,找到与该路径中的任何节点的最大XOR

时间:2017-04-28 19:45:27

标签: algorithm tree xor

对于给定树,有一些sort个查询。每个查询都有节点1<=q<=10^5uv。如何查找K XOR max(K其中node)是位于节点u和v之间的路径中的任何节点。其中XOR是按位node操作。

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

1 个答案:

答案 0 :(得分: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商店级节点的每个节点中。然后回答这个问题可以简单地通过这个trie。要检查是否有合适的前缀高于或等于level[LCA(u, v)],您应该对节点中存储的数组进行二进制搜索。 算法复杂度为O(log(n) * log(max_node_val))