[英]for a given path between node u-v in tree find maximum XOR with any node in that path
对于给定的树,存在某些1<=q<=10^5
查询。 每个查询都有节点u
, v
和K
如何查找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.