题意
给出一棵边为字母的有根树,和若干条具有一定代价的串。
可以花费对应的代价,覆盖一条与串对应的祖先后代链。
求一种花费最少的方案,使所有边都被覆盖至少一次。
考虑用树形dp解决这道题。
设 f [ p ] [ x ] f[p][x] f[p][x]表示,满足从 p p p到 x x x的管道以及 x x x的子树中所有管道都能受到监控( p p p是 x x x祖先),的最小代价。那么,答案就是 ∑ f a [ x ] = 1 f [ 1 ] [ x ] \sum_{fa[x]=1}f[1][x] ∑fa[x]=1f[1][x]。注意此处不一定恰恰这些地方受到监控,受监控的管道可以延伸到 p p p的祖先。
考虑如何转移,显然 f [ p ] [ x ] f[p][x] f[p][x]可以使用已有的规格,由 x x x的儿子转移过来;也可以是购买新的规格覆盖 p p p到 x x