洛谷P3565 [POI2014]HOT-Hotels

版权声明: https://blog.csdn.net/qq_16267919/article/details/81274572

f[i][j]表示离点i距离为j的点个数,g[i][j]表示点i子树外还需一个距离i为j的点对个数
a n s = f [ i ] [ j ] g [ s o n ] [ j + 1 ] + g [ i ] [ j ] f [ s o n ] [ j 1 ]
f [ i ] [ j ] = f [ s o n ] [ j 1 ] , g [ i ] [ j ] = g [ s o n ] [ j + 1 ]
然后发现f和g的转移可以通过移动数组的指针实现,对深度最大的儿子这样做一下,复杂度是O(n)的.
Code

猜你喜欢

转载自blog.csdn.net/qq_16267919/article/details/81274572