随笔分类 -  树 - 虚树

[VIJOS2053][SDOI2019]世界地图:最小生成树+虚树
摘要:分析 可以发现第一列和最后一列永远不会被删除,于是我们可以想到维护前后缀最小生成树,但是直接维护的话显然时间空间两爆炸。(通过上网找题解)可以发现我们关心的只是最左边和最右边两列,而不关心内部的连边情况。所以我们可以仅维护这两列的节点在最小生成树上形成的虚树,边权是对应链上最大的边权,合并时对两棵虚 阅读全文

posted @ 2019-05-08 18:00 ErkkiErkko 阅读(488) 评论(0) 推荐(0)

[BZO3572][HNOI2014]世界树:虚树+倍增
摘要:分析 思维难度几乎为$0$的虚树码农(并不)题。 代码 cpp include define rin(i,a,b) for(register int i=(a);i=(b); i) define trav(i,a) for(register int i=head[a];i;i=e[i].nxt) d 阅读全文

posted @ 2019-02-15 12:02 ErkkiErkko 阅读(225) 评论(0) 推荐(0)

虚树总结&题单&简要题解
摘要:简介 虚树,即剔除所有无关结点,只保留询问点和询问点的相关结点(两两之间的LCA),建一棵新树,这棵新树就是虚树。通过虚树,可以有效的减小询问(甚至修改)的复杂度。设询问点的个数是$k$,那么建虚树的一般方法的时间复杂度为$O(k \log k)$。 构建方法 1. 把所有询问点按dfs序排个序。 阅读全文

posted @ 2019-01-17 21:46 ErkkiErkko 阅读(325) 评论(0) 推荐(0)