题目大意:
给定n个点的有根树,每条边有边权,每个点有点权w,
你要在k个点上建立伐木场,对于每个没有建伐木场的点x,令与它最近的祖先、有伐木场的点,为y,你需要支付dis(x,y)*w[x]的代价。
选择合适的位置建伐木场,最小化总代价。
n<=100
分析:
f[i][j][k]表示, 以i为根的子树中,离其最近的祖先为j,加上这个点的子树共建了k个伐木场。
树形背包,每个点选择建伐木场,或者不选择建。
注意,无论如何,在x子树y回溯后,是可以在子树根节点y造一个伐木场的。
题目大意:
给定n个点的有根树,每条边有边权,每个点有点权w,
你要在k个点上建立伐木场,对于每个没有建伐木场的点x,令与它最近的祖先、有伐木场的点,为y,你需要支付dis(x,y)*w[x]的代价。
选择合适的位置建伐木场,最小化总代价。
n<=100
分析:
f[i][j][k]表示, 以i为根的子树中,离其最近的祖先为j,加上这个点的子树共建了k个伐木场。
树形背包,每个点选择建伐木场,或者不选择建。
注意,无论如何,在x子树y回溯后,是可以在子树根节点y造一个伐木场的。