题意:
给出一个有权树,求树上两点路径的最大异或和;
n
题解:
考虑异或的性质,如果任选一点为根,处理出所有点的异或深度;
那么将两点的深度异或起来,LCA到根的路径就异或了两次相当于没有;
所以异或距离就是两点异或深度的异或和,问题就转化成了从n个数中选两个数使异或和最大;
这个经典问题就可以把数字按位存进01trie树,从高位到低位贪心求解;
复杂度O(31n);
...
分类:
其他好文 时间:
2015-07-25 09:34:21
阅读次数:
109
题目描述:Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.According to thedefinition of LCA on Wikipe...
分类:
其他好文 时间:
2015-07-24 22:12:46
阅读次数:
94
题目链接: Poj 3694 Network题目描述: 给出一个无向连通图,加入一系列边指定的后,问还剩下多少个桥?解题思路: 先求出图的双连通分支,然后缩点重新建图,加入一个指定的边后,求出这条边两个端点根节点的LCA,统计其中的桥,然后把这个环中的节点加到一个集合中,根节点标记为LCA。题...
分类:
Web程序 时间:
2015-07-24 20:18:55
阅读次数:
113
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.
According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined
betw...
分类:
其他好文 时间:
2015-07-24 18:33:45
阅读次数:
96
HDU 5296 Annoying Problem题目链接:hdu 5296题意:在一棵给定的具有边权的树,一个节点的集合S(初始为空),给定Q个操作,每个操作增加或删除S中的一个点,每个操作之后输出使集合S中所有点联通的最小子树的边权和。思路:最小子树上的节点的充要条件:
节点为(S集合中所有点的LCA)的子节点;
节点有一个子孙为S集合中的点。
那么我们给每个节点都开一个标记...
分类:
其他好文 时间:
2015-07-24 18:33:27
阅读次数:
110
Lowest Common Ancestor of a Binary Search Tree
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.
According to the definition of LCA on Wikipe...
分类:
其他好文 时间:
2015-07-24 18:23:43
阅读次数:
106
1 //#pragma comment(linker, "/STACK:1677721600") 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #incl...
分类:
其他好文 时间:
2015-07-23 21:47:57
阅读次数:
110
题目链接:hdu 4912 Paths on the tree题目大意:给定一棵树,和若干个通道。要求尽量选出多的通道,而且两两通道不想交。解题思路:用树链剖分求LCA,然后依据通道两端节点的LCA深度排序,从深度最大优先选。推断两个节点均没被标记即为可选通道。每次选完通道。将该通道LCA下面点所有...
分类:
其他好文 时间:
2015-07-23 19:40:38
阅读次数:
107
通道:http://acm.hdu.edu.cn/showproblem.php?pid=5296题意:给一棵n个节点的树,再给q个操作,初始集合S为空,每个操作要在一个集合S中删除或增加某些点,输出每次操作后:要使得集合中任意两点互可达所耗最小需要多少权值。(记住只能利用原来给的树边。给的树边已经...
分类:
其他好文 时间:
2015-07-23 19:15:08
阅读次数:
192
[题意]
给定一颗树上的几条链和每条链的权值,求能取出的不含有公共节点的链的最大权值....
[解]
预处理每条链的lca
树形DP, d[i]表示取到这个节点时可以得到的最大值 , sum[i]=sigma( d[k] | k 是i的子节点)
如果不取i d[i]=sum[i]
如果取i , e是lca为i的链则 d[i]=max(d[i],e的权值+sigma(sum[k])-s...
分类:
其他好文 时间:
2015-07-23 10:46:56
阅读次数:
183