牛半仙的妹子树(牛客网2020-普及组第三场T3) 题解 (人生中第一道换根dp)

1.前言

我改了好久

2.分析

我们先令一个根节点(1),则这棵树变成了一个棵有根树

我们将(旪)超能力对i的磁场强度分为两种

(1):不在以i为根节点的子树内的妹子影响Ta
(2):在以i为根节点的子树内的妹子影响Ta

我们先处理旪超能力的妹子的磁场强度

我们先定义几个变量

disx_u表示向上的旪超能力节点磁场强度和
disx_d表示向下的旪超能力节点磁场强度和
numx_d表示向下的旪超能力节点的个数
numx_u表示向上的旪超能力节点的个数

disx_d[u] += disx_d[v] + numx_d[v];
//以v为根节点的子树上的有旪超能力的妹子距离u的距离总和 
//加上以v为根节点的子树上的有旪超能力的妹子的数量
numx_d[u] += numx_d[v];

重头戏来了

numx_u[v] += numx_u[u] + numx_d[u] - numx_d[v];
disx_u[v] += disx_d[u] - (disx_d[v] + numx_d[v]) + (numx_d[u] - numx_d[v]) + disx_u[u] + numx_u[u];
posted @ 2020-10-27 21:47  C2022lihan  阅读(42)  评论(0编辑  收藏  举报