虚树
Clove_unique
All that you have lost can be won back bit by bit as long as you wish for it.
展开
-
[BZOJ2286][Sdoi2011]消耗战(虚树+lca+树形dp)
题目描述传送门题解裸的dp可以得到20pts 令f(i)表示将i点子树中所有关键点割掉的最小代价 那么若i为关键点,f(i)=i的父边权;若i不是关键点,f(i)=所有儿子的f之和 与 i的父边权取min那么对于所有的关键点和它们的lca造出一棵虚树,连的边为树链上所有边的最小值 同样的方法dp就行了代码#include<algorithm> #include<iostream> #inclu原创 2017-03-12 12:22:17 · 734 阅读 · 0 评论 -
[BZOJ3611][Heoi2014]大工程(虚树+树形dp)
题目描述传送门题解令size(i)表示i子树里有多少个关键点 令sum(i)表示i子树中所有关键点到i的距离和 令Max(i)表示i子树中所有关键点到它的最长链,_Max(i)次长链,Min(i)最短链,_Min(i)次短链 这些都非常好维护,第二问和第三问也很好计算,用最和次拼一下就行了 对于第一问的话,在dp的时候维护一下当前size和sum的乘积就行了 将所有的关键点和它们的lca建原创 2017-03-12 12:30:28 · 749 阅读 · 0 评论 -
[BZOJ3572][Hnoi2014]世界树(虚树+树形dp+二分+lca)
题目描述传送门题解首先建出虚树来,边权即为原树上的距离 这题我dp的方法非常蠢 f(i)表示从i的父边出去(必须经过i的父亲)到达的关键点的最短路 fp(i)表示最短路的点 g(i)表示i到i的子树中到达的关键点的最短路 gp(i)表示最短路的点 然后这两个互相转移一下…dp完了之后枚举虚树上的每一条边(u,v) 因为已经知道了从u出去到关键点的最短路和从v出去到关键点的最短路 然后原创 2017-03-13 21:47:39 · 849 阅读 · 0 评论