给出一颗树,结点权值为 求: 思路 本题为点分治模板题 以重心为根,用 solve(x) 解决 子树内贡献 每次 solve(x) 时,首先得到 经过该点 和 不经过该点 的贡献总和 calc(x, fa, 0) 这个过程首先利用 dfs_dis(x, fa, 0) 得到以 为根的链信息再将链两两合并,得到 的路径贡献 排除 不经过该点, 即排除 的情况,只需要 先向下走一步,然后统计答案,及 calc(x, fa, 1) 注意到以 为根后会将 删去,则每条路径有且仅会被统计一次,故答案正确。 对于本题,由于求 时若暴力枚举,calc 复杂度会为 总复杂度为 需要先...