题解 - P 6419 \mathrm{P6419} P6419
题目意思
S o l \mathrm{Sol} Sol
-
因为要求每个点为根的答案,显然会想到换根 D P DP DP(虽然不一定
-
我们首先先申明几个变量:
-
f u f_u fu表示把 u u u子树内的任务做完并且回到 u u u点的花费
-
g u g_u gu表示 u u u子树外的花费
-
d i s u , 0 / 1 dis_{u,0/1} disu,0/1表示 u u u子树内的最长链/次长链
-
u p u up_u upu表示 u u u子树外的最长链
-
-
那么对于每个点的贡献 a n s i = f i + g i − max ( u p i , d i s i , 0 ) ans_i=f_i+g_i-\max(up_i,dis_{i,0}) ansi=fi+gi−max(upi,disi,0

这篇博客详细介绍了如何解决P6419【COCI2014-2015#1 Kamp】问题,采用换根DP策略。作者定义了fu、gu、disu等关键变量,并通过转移方程解释了每个点的贡献。代码实现的时间复杂度为O(n)。
最低0.47元/天 解锁文章
1006

被折叠的 条评论
为什么被折叠?



