RMQ与LCA问题
题意:给你一个连通的图,然后每加一条边,就求一次图中的桥数;解题思路:这题一看,就知道第一步肯定是缩点,先求边双连通分量,然后就是并查集的事情了,由于缩点后的图是一棵树,以某一点为根,在缩点后的图中找到每个点的深度,然后用并查集记录父结点,当加入一条边时,先使边的两端找到深度一样的父结点,再一路一找到第一个相同的父结点为止,每过一条桥,桥数就减一,然后把这条边标记为不是桥,输出桥数,这里其实有求L
题意:给你一个森林,求某两个点的距离,如果两点不在同一棵树上,输出Not connected;解题思路:一开始对这种多次访问的lca离线算法不熟悉,要么超时,要么wa;后来,直接在tarjan递归中每访问一个点就只判断与这个点有关的询问,而不是查遍全部询问,这一点害我超时了几次。然后,这题由于是森林,所以要巧妙地对点在那颗树做一下标记,如果询问的两个点不再同一树上直接有不连接的答案,最后
题意:给你一棵带权树,求某两点之间的距离,就是带权LCA问题。解题思路:我是把LCA转化为RMQ来做的,这题的确很水,直接把上次在poj上做的题目1986当模板就ko掉了模板的是还是不多说了。注意输出格式。#include<iostream> #include<cmath> #include<cstring> #include<string> #in
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号