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

对于给定树,存在某些1< = q< = 10 ^ 5个查询.每个查询都有节点u,v和K.如何找到max(KXORnode),其中node是位于节点u和v之间的路径中的任何节点.其中XOR是按位XOR运算. 任何帮助,这将是多次执行查询的最佳方式. 最佳答案 它类似于这个问题
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.要检查是否有合适的前缀更高或更高级别[LCA(u,v)],您应该对节点中存储的数组进行二进制搜索.

算法复杂度为O(log(n)* log(max_node_val))

点赞