延安市网站建设_网站建设公司_域名注册_seo优化
2025/12/29 18:37:16 网站建设 项目流程

括号树上莫队

考虑将括号序分块,莫队处理

考虑dfs到一个节点就加入x,离开这个节点就加入-x

考虑这个序列把-x看作x其实就是欧拉序

莫队的时候x表示add,-x表示del

考虑记录节点x在该序列中出现的位置为\(bg_x\),-x出现的位置为\(ed_x\)

考虑查询的路径为\(x\)\(y\)的路径,且有\(bg_x<bg_y\)

如果\(bg_y\in [bg_x,ed_x)\),则x为y的祖先或者x=y

所有\(bg_k\in [bg_x,bg_y]\)\(ed_k\notin [bg_x,bg_y]\)的节点就是路径上的节点

否则,考虑不是lca(x,y)的点,有

\(bg_k\in [ed_x,bg_y]\)\(ed_k\in[ed_x,bg_y]\)恰好满足一个

对应到欧拉序上,

  • \(lca(x,y)=x,[bg_x,bg_y]\)
  • \(otherwise,[ed_x,bg_y]\),需要强制添加其lca

当莫队的查询区间为 [l,r] 时,有贡献的点即为括号序列在区间 [l,r] 内只出现过一次的点和lca

维护的时候就正常的做莫队即可,注意下有时候有lca直接特殊的操作一下最后撤销

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询