繁体   English   中英

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

[英]for a given path between node u-v in tree find maximum XOR with any node in that path

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

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

与此问题类似, 最大XOR值比仅使用XOR更快 但是查询树。 该解决方案处于离线状态。 对于每个查询,答案将是max(getxor(LCA(u, v), u, K), getxor(LCA(u, v), v, K)) 执行dfs。 进入节点时,将其添加到trie中,而离开擦除时。 在trie的每个节点中,存储节点级别。 然后,可以通过简单地遍历此查询来回答此查询。 要检查是否有合适的前缀level[LCA(u, v)]或相等level[LCA(u, v)]前缀level[LCA(u, v)]您应该对节点中存储的数组进行二进制搜索。 算法复杂度为O(log(n) * log(max_node_val))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM