luogu P3047 [USACO12FEB]Nearby Cows G
这道题直接设状态不太好做。
我们先设\(g[x][i]\)表示\(x\)子树内跟它相距不超过\(i\)的点的点权之和。这个一遍\(dfs\)就可以搞定。
现在的问题是怎么计算非\(x\)子树内的贡献(我当时想了好久楞是没想出来呜呜呜)。其实很简单,有了\(g\)数组的辅助,我们现在可以直接设\(f[x][i]\)表示与\(x\)相距不超过\(i\)的点的点权之和。转移方程:
\[f[x][i]=f[fa][i-1]-g[x][i-2]+g[x][i]
\]
其中\(fa\)表示\(x\)的父亲节点。容易知道根节点的\(f\)数组等于\(g\)数组,所以我们只要这样递归下去就可以了,其实这题就是一个简单容斥。
由于博主比较菜,所以有很多东西待学习,大部分文章会持续更新,另外如果有出错或者不周之处,欢迎大家在评论中指出!