![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
虚树
Love_xyh
这个作者很懒,什么都没留下…
展开
-
CF613D Kingdom and its Cities
重点在树形dp。 dp[u]:u为根的子树的答案最小值 对于有些只有一个重要节点的子树,可以暂时保留这个节点 ,等到不得已必须处理时再处理,可以使得答案更优 所以再记录一个g[u]:u为根的子树,当答案最小时,还剩下没处理好的节点个数 #include <bits/stdc++.h> using namespace std; const int N=1e5+5; int n,u,v,q...原创 2020-03-19 10:35:57 · 120 阅读 · 1 评论 -
BZOJ 3611:Heoi2014 大工程
原来最长链用的都是两边dfs求直径或用两个数组存最长链和次长链,今天学习了,如果只需要求出直径大小,别的什么都不用,那么只用一个数组进行dp更加方便。 void DP(int u) { //f2[u]:最短链 f3[u]:最长链 if (vis[u]) f1[u]=1,f2[u]=0,f3[u]=0; else f1[u]=0,f2[u]=1e18,f3[u]=-1e18; for ...原创 2020-03-19 10:34:03 · 150 阅读 · 0 评论 -
BZOJ 2286:Sdoi2011消耗战
也是新学虚树,所以只能简单介绍下。 想必大家都知道离散化,虚树可以理解为树上的离散化,这样处理,对于一些询问次数比较多,原树比较大的题,我们就可以尝试建立出虚树,并在虚树上进行操作。 而虚树作为一个工具,一般会和树形dp或树上贪心结合在一起。 很幸运看了yyb的博客后,发现了很简便的建虚树的方法,此题建好虚树后,一个基础树形dp即可。 #include <bits/stdc++.h> ...原创 2020-03-19 10:28:53 · 128 阅读 · 0 评论