题意:
有一棵树,水源在根节点1,房子在叶子节点。有若干操作,操作可能是歹徒占领或者离开一个房子。我们不想给歹徒供水,可以通过切断边实现(如果某个叶子节点到根节点的路径上有一条边被切掉,那么就不能供水了。)对于每次操作后,问不给所有歹徒供水最少要切多少条边,并且问在切满足前面最小的情况下,最少使得多少个良民受影响。初始没有歹徒。
题目链接
题意: # 一棵树,给出点权,问一条树链上第k大的点权,点权可以动态修改。
题目链接
题意: # 给出一棵树,以及三个点(可能重合),问两两组成的3条路径中,哪2条路径重合部分最长。
题目链接
题意:求一个BST中某两个节点LCA….
思路:卧槽。。。竟然求LCA…直接想到的显然是Tarjan的方法或者。。。RMQ+DFS。。。但是感觉。。。leetcode怎么可能考算法。。。。于是想到。。。可以从BST下手。。。
zoj 3195题目链接 题意:求树上三点的最短距离。。。 思路:两两求,和除以2. 因为忘记初始化p=0..WA了将近两个小时。。。? 妈的智障。
hdu2874题目链接
题意:给一个森林,问两点的最短距离,或者输出两点不联通。
思路:最最重要的一点是:添加虚点!
题目链接 题意:求树上两点的最短距离? 思路: dis[i]表示点i到根节点的距离,那么任意两点u,v的最短距离d = dis[u]+dis[v]-2*dis[LCA(u,v)]. 只需要求出rmq+dfs的在线方法求出lca(u,v)即可。
poj1470题目链接
题意:求两点的lca. 思路:dfs+rmq. 读入技巧。 读入比较坑爹。。。 学会了一种新的读入技巧。
poj1330题目链接
题意:给出一棵树,求两点的lca. 思路:将lca转化成rmq在线求解。
题目链接 题意:一棵树,给出n-1个边权,然后q组查询,每组查询询问两个点之间的距离。 思路: