下面两个问题:
1.给定一棵有 N (1 < N < 500000)个节点的树,定义两点之间的异或距离为这两个点之间的路径上的边的长度 L
( 0 < L < 500000)的异或值,问有多少点对的异或距离等于 K (0 < K < 500000)。
2.给定一棵有 N (1 < N < 500000)个节点的树,定义两点之间的异或距离为这两个点之间的路径上的边的长度 L
(0 < L < 2 的31次方 -1)的异或值,问有多少点对的异或距离小于 K(0 < K < 2 的31次方 -1)。
两个点之间的路径是惟一的,这是因为树中不存在环,所以不存在多条可达路径。(树的结构是:每个节点有一个或者多个子节点,一个节点只有一个父亲节点,不同节点的子树不相交(不存在环结构))。所以上面两个问题中,点对的路径是惟一的,所以两个点的异或距离是惟一的。如图 1 ,举例说明两个点之间的异或距离。
图1 两点之间的异或距离
再来看两个问题,很接近,第一个问题是等于,第二个问题是小于。先解决第一个。
1.问题1(不再缀述)