首先O(n2)dp很好想 f[i][j]表示i子树内的所有边都被覆盖且i~j的路径也都被覆盖的最小花费. 考虑去掉无用的状态,其实真正用到的就是每一条链. 去掉第二维,f[i]表示i子树内的边都被覆盖且父向边也被覆盖的最小花费. 那么怎么转移呢? f[i]可以是任意一条包含i和fa[i]的链转移而来, 首先要选这条链,还要加上这条链下端点到i所有其他儿子的f值,这样复杂度好像依旧很高 再优化,这不就是线段树取一个min吗? 那么我们现在要做的就是在每一个点上,在对应的一些链中取一个min 对于每…