LCA问题向RMQ问题的转化方法
来源:互联网 发布:淘宝两天没发货 编辑:程序博客网 时间:2024/06/10 07:10
对树进行深度优先遍历,每当“进入”或回溯到某个结点时,将这个结点的深度存入数组E最后一位。同时记录结点i在数组中第一次出现的位置(事实上就是进入结点i时记录的位置),记做R[i]。如果结点E[i]的深度记做D[i],易见,这时求LCA(T,u,v),就等价于求E[RMQ(D,R[u],R[v])],(R[u]<R[v])。例如,对于第一节的例一,求解步骤如下:
数列E[i]为:1,2,1,3,4,3,5,3,1
R[i]为:1,2,4,5,7
D[i]为:0,1,0,1,2,1,2,1,0
于是有:
LCA(T,5,2) = E[RMQ(D,R[2],R[5])] = E[RMQ(D,2,7)] = E[3] = 1
LCA(T,3,4) = E[RMQ(D,R[3],R[4])] = E[RMQ(D,4,5)] = E[4] = 3
LCA(T,4,5) = E[RMQ(D,R[4],R[5])] = E[RMQ(D,5,7)] = E[6] = 3
RMQ(D,5,7)返回数组D中,下标5到7中深度最小的下标,由DFS性质可知 自己理解的,大牛求指教
易知,转化后得到的数列长度为树的结点数的两倍加一,所以转化后的RMQ问题与LCA问题的规模同次
- LCA问题向RMQ问题的转化方法
- LCA向RMQ转化
- 普通RMQ问题转化为LCA问题的算法
- rmq问题和lca可以相互转化
- LCA问题的RMQ做法
- [CF 191C]Fools and Roads[LCA Tarjan算法][LCA 与 RMQ问题的转化][LCA ST算法]
- SOJ-1008(将LCA问题转化为RMQ)
- RMQ与LCA问题
- RMQ 和LCA问题
- LCA与RMQ问题
- LCA问题----RMQ算法
- RMQ和LCA问题
- LCA问题的RMQ解法解析
- RMQ问题与LCA问题
- RMQ问题与LCA问题
- 转载 LCA与RMQ问题
- LCA与RMQ问题详解
- RMQ与LCA问题(转载)
- 利用osql/ocmd批处理批量执行sql文件
- LCA问题——最近公共祖先(Least Common Ancestors)
- 今天礼拜六
- 排序算法之一 直接插入排序
- RMQ问题——RMQ问题(Range Minimum Query)
- LCA问题向RMQ问题的转化方法
- Java初级--访问控制权限及多线程
- win7系统的有点多
- 管理心得-----“严与宽“相对于“公与私“
- 我的Emacs配置
- 混沌的一周
- 数据共享的积极影响
- 开机会自动运行chkdsk ,怎么设置不运行
- 匈牙利算法