题目链接
想了好久,一开始想去写树链剖分,但是怎样写第K小只在可持久化线段树中写过,然后就是得去想怎样做到状态的得到了,我们可以考虑从根节点出发,关系不断的递推下去,就可以变成一棵自上而下的可持久化线段树了。
具体是:我们可以看作是从根节点出发的树,状态也是这样往下推下去,如此建立的线段树,我们查询一段区间的状态可以从LCA的角度去看问题,找到LCA(x, y)然后,我们只要一个LCA节点,然后求出区间X到根节点,以及Y到根节点的关系式来推这个关系,但是千万不要去减两倍LCA的关系,因为那样就会少掉一个节点了,于是,就dfs()往下建树,就是寻找到最后的答案了。
最后,再赋上两组挺有用的测试样例。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include