简介 虚树,顾名思义就是不真实的树。 它往往出现在一类树形动态规划问题中。 换句话说,虚树实际就是为了解决一类树形动态规划问题而诞生的! 我们从一道经典的虚树题目入手 [SDOI2011]消耗战 链接:https://www.luogu.org/problemnew/show/P2495 题目大意 ...
分类:
其他好文 时间:
2018-06-13 11:50:04
阅读次数:
179
题目链接 "bzoj 2286: [Sdoi2011]消耗战" 题解 抽离虚树dp 对于虚树我们可以O(m)构造 dfs序排序后,易证相邻两点lca为所有出现到的lca 每次维护一个深度递增的栈,用其来维护一个节点的虚树,当其被pop出栈时他的虚数也构造完了 那么栈中序列即为链的父子关系 每次若将要 ...
分类:
其他好文 时间:
2018-06-03 12:22:52
阅读次数:
155
我很喜欢这道题。 题目大意: 给出一棵带点权树。对每个询问$ u,v,x $,求$\prod_{i \in P(u,v)}gcd(ai,x)$。其中$ P(u,v) $表示$ u $到$ v $的路径。 题目分析: 注意到权值大小不会超过$ 10^7 $,这似乎是在提示我们进行线性筛和质因数分解。我 ...
分类:
编程语言 时间:
2018-06-02 16:36:28
阅读次数:
225
题面 "传送门" 虚树 把跟询问有关的点拿出来建树,为了方便树$DP$ 在$LCA$处要合并答案,那么把这些点的$LCA$也拿出来 做法:把点按$dfs$序排列,然后求出相邻两个点的$LCA$,把这些点建一个虚树,维护一个栈就好了 Sol 虚树+树$DP$ cpp include define IL ...
分类:
其他好文 时间:
2018-05-31 00:31:06
阅读次数:
179
SD的题有点反人类啊。。。 d1t1[SDOI2018]物理实验 感觉比较好想但不太好写,写了一半弃了 d1t2[SDOI2018]战略游戏 建出圆方树,每次建虚树,答案就是虚树上的原点个数减去询问的点数。 1 //Achen 2 #include<algorithm> 3 #include<ios ...
分类:
其他好文 时间:
2018-05-24 21:51:53
阅读次数:
327
【BZOJ3611】大工程(虚树,动态规划) 题面 "BZOJ" Description 国家有一个大工程,要给一个非常大的交通网络里建一些新的通道。 我们这个国家位置非常特殊,可以看成是一个单位边权的树,城市位于顶点上。 在 2 个国家 a,b 之间建一条新通道需要的代价为树上 a,b 的最短路径 ...
分类:
其他好文 时间:
2018-05-21 16:22:38
阅读次数:
135
前言 先贴一道模板题https://www.luogu.org/problemnew/show/P2495 题意,给你一棵n个点的有边权树,有m次询问,每次询问k个点,要删除一些边使得这k个点均不与1号点联通。 数据范围:2=1,sigma(ki)=0;i ){ if (f[x][i]!=f[y][ ...
分类:
其他好文 时间:
2018-04-09 23:01:21
阅读次数:
216
题解: lct维护子树信息 推荐https://www.cnblogs.com/GXZlegend/p/7061458.html,非常详细 总的来说就是 维护虚树信息和子树信息 虚树信息只有在access和link时才会改变 下面是对拍程序 my maker dp ...
分类:
其他好文 时间:
2018-04-09 00:21:49
阅读次数:
169
【CF613D】Kingdom and its Cities 题意:给你一棵树,每次询问给出k个关键点,问做多干掉多少个非关键点才能使得所有关键点两两不连通。 $n,\sum k\le 10^5$ 题解:刷虚树板子啦! 首先如果两个关键点相邻则无解。然后建出虚树,进行树形DP。设f[i]表示i子树中 ...
分类:
其他好文 时间:
2018-04-05 20:01:55
阅读次数:
165
虚树算法其实原理蛮简单的就是,从一颗n个结点的原树上在只取出必要结点成一颗新树,这颗新树必包含指定m个结点并保持原树上的祖孙关系。 首先我们来解答一些问题 问:什么样的结点是必要的呢?? 答:指定的m个结点和 这m个结点中任意两个结点的最近公共祖先。 问:为啥要包含最近公共祖先呢? 答:因为最近公共 ...
分类:
其他好文 时间:
2018-04-01 14:24:07
阅读次数:
213