博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
虚树小结
阅读量:4316 次
发布时间:2019-06-06

本文共 685 字,大约阅读时间需要 2 分钟。

前言

其实很久以前就学过了,做完两个题后巨大的码量让juruo滚回去复习\(NOIP\)知识点

再过三个月就要省选了,来复习一下

作用

说到底,虚树就是单独拉出来几个点建个树优化树形动规

理解

我们按dfs序排序,这里就为了简化操作

建树时堆到栈里建,由于dfs序排列,\(a_i\)与栈顶的\(lca\)不可能是\(a_i\)
所有有两种情况:
1.\(lca\)为栈顶,直接忽略
2.栈顶与\(a_i\)分别位于\(lca\)的两棵子树,此时我们应该结束栈顶的子树遍历了
\(~~~\)因为\(a_i\)>栈顶,栈顶这棵子树的结点再也不会来了,所以我们考虑把这个结点弹出来
\(~~~\)但是我们把栈顶弹出前,总得把它跟父节点连起来吧,它的父节点除能是\(lca\)外,还能是栈顶下面这个节点
\(~~~\)如下图,两种情况
\(~~~~~~1.lca\)为栈顶的父节点时,如\(lca1\)
\(~~~~~~2.tp-1\)为栈顶的父节点时,如\(lca2\)
5c41598942c08.png

sort(a+1,a+1+k,cmp);sta[tp]=1;for(int i=1;i<=k;++i){    int lca=LCA(a[i],sta[tp]);    while(dep[sta[tp]]>dep[lca]){        if(dep[sta[tp-1]]
1){ add(sta[tp-1],sta[tp]); tp--;}

转载于:https://www.cnblogs.com/y2823774827y/p/10287099.html

你可能感兴趣的文章
HttpServletRequest /HttpServletResponse
查看>>
SAM4E单片机之旅——24、使用DSP库求向量数量积
查看>>
从远程库克隆库
查看>>
codeforces Unusual Product
查看>>
hdu4348 - To the moon 可持久化线段树 区间修改 离线处理
查看>>
springMVC中一个class中的多个方法
查看>>
Linux系统安装出错后出现grub rescue的修复方法
查看>>
线段树模板整理
查看>>
[iOS问题归总]iPhone上传项目遇到的问题
查看>>
Python天天美味(总) --转
查看>>
Spring Framework tutorial
查看>>
【VS开发】win7下让程序默认以管理员身份运行
查看>>
【机器学习】Learning to Rank 简介
查看>>
Unity 使用实体类
查看>>
MySQL常见注意事项及优化
查看>>
流畅的Python (Fluent Python) —— 前言
查看>>
Jquery-menu-aim流畅的菜单滑动体验
查看>>
Jquery EasyUI修改行背景的两种方式
查看>>
嵌入式Linux学习笔记(0)基础命令。——Arvin
查看>>
二分图匹配
查看>>