摘要: 原题链接 考察:树形dp 思路: 树上最大值,最小值,方案数是树形dp常考的问题.这里设置f[i][j]为在以i为根的子树中,i的颜色是j的最大结点数. 设置2为绿色,初始化所有f[i][2] = 1.如果当前父节点u只有一个子结点x f[u][k] += max(f[x][j]) j!=k. 如果 阅读全文
posted @ 2021-04-08 19:06 acmloser 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形dp 思路: 换根dp,f[i][j][0]表示以i为根的子树中与i距离不超过j的权值和.f[i][j][1]表示以i为起点,往上走距离不超过j的点集合. 易知f[i][j][0] += f[v][j-1][0] 其中f[i][0][0] = w[i] 如果是往上走:f[v][j 阅读全文
posted @ 2021-04-08 14:21 acmloser 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树形dp 错误思路: 换根dp,正向点权值0,逆向点权值1.求每个点到其他点的距离和. 此思路错在会多次计算要旋转的边. 思路: 换根dp,需要两次dfs求当前结点i往下走的逆转数和往上走的逆转数.向下走的计算很容易 f[u][1]+=f[v][1]+road[i].w 向上走如果直 阅读全文
posted @ 2021-04-08 00:58 acmloser 阅读(35) 评论(0) 推荐(0) 编辑